为什么我的必需强参数没有被提取?

时间:2013-10-30 18:37:16

标签: ruby ruby-on-rails-4

我无法找到为什么我的强参数没有保存在数据库中的原因。我没有使用脚手架来创建我的模型,而是使用rails g model Customer Name:string Email:string命令。使用rails console时会添加相同内容。

这是我的页面控制器

class PagesController < ApplicationController 

def Home

end

def Login

@customer=Customer.new(master)
@customer.save

end
 private
 def attr @customer=Customer.find(params[:id]) end 
def master params.require(:customer).permit(:Name,:Email) end end

我的customer.rb文件

class Customer < ActiveRecord::Base

    has_many :Products,through: :Order

end

尝试保存新客户时的开发日志。

Started GET "/Login?Customer%5BName%5D=s&Customer%5BEmail%5D=csc" for 127.0.0.1 at 2013-10-31 04:48:49 +0530 Processing by PagesController#Login as HTML Parameters: 

{"Customer"=>{"Name"=>"s", "Email"=>"csc"}} (0.1ms) begin transaction SQL (0.5ms)

 INSERT INTO "customers" ("created_at", "updated_at") VALUES (?, ?) [["created_at", Wed, 30 Oct 2013 23:18:49 UTC +00:00], ["updated_at", Wed, 30 Oct 2013 23:18:49 UTC +00:00]] (72.4ms) commit transaction Rendered pages/Login.html.erb within layouts/application (0.1ms) Completed 200 OK in 82ms (Views: 5.7ms | ActiveRecord: 73.0ms)

我在浏览器中打开页面时遇到的错误:

ActionController::ParameterMissing in PagesController#Login
param not found: customer
Extracted source (around line #17):

2 个答案:

答案 0 :(得分:0)

案件很重要。您传递Customer,但需要customer。这些是不同的参数。将所有内容切换为小写,实际类除外。

答案 1 :(得分:0)

在您指定params.require的{​​{1}}中,在您的参数中customer。这有所不同。根据经验:始终使用小写。