Checkbox Rails 4个嵌套属性,带有字段“u”表示Don&“x27”;无法保存到数据库
我想通过一个表单使用accepts\u nested\u attributes\u for在两个不同的表(场馆和停车场)上创建记录。我希望用户能够创建一个新的场馆,并通过复选框指定该场馆可用的停车选项。提交表单时,会创建包含模型(场地)的记录,但嵌套模型(停车场)不会发生任何变化。当我检查来自服务器的响应时,我看到我遇到了“unpermittedparameters:parking_attributes”,尽管我不知道为什么 我已经看过,并尝试了来自多个stackoverflow帖子的建议(,和)。如果有人能帮我,我将不胜感激 我已经包括了两个模型:场馆控制器、场馆/新视图和服务器的响应 地点.rbCheckbox Rails 4个嵌套属性,带有字段“u”表示Don&“x27”;无法保存到数据库,checkbox,ruby-on-rails-4,nested-attributes,strong-parameters,fields-for,Checkbox,Ruby On Rails 4,Nested Attributes,Strong Parameters,Fields For,我想通过一个表单使用accepts\u nested\u attributes\u for在两个不同的表(场馆和停车场)上创建记录。我希望用户能够创建一个新的场馆,并通过复选框指定该场馆可用的停车选项。提交表单时,会创建包含模型(场地)的记录,但嵌套模型(停车场)不会发生任何变化。当我检查来自服务器的响应时,我看到我遇到了“unpermittedparameters:parking_attributes”,尽管我不知道为什么 我已经看过,并尝试了来自多个stackoverflow帖子的建议(,和
class Venue < ActiveRecord::Base
has_many :parkings
accepts_nested_attributes_for :parkings
end
服务器响应
Started POST "/venues" for 127.0.0.1 at 2014-04-29 14:02:54 -0500
Processing by VenuesController#create as HTML
Parameters: {"utf8"=>"✓",
"authenticity_token"=>"kMcVVwXq7f22rIGm1rQ6+QzC80ScmXrVA2IE8TGbN7w=",
"venue"=>{"name"=>"The Five O'Clock Lounge",
"address"=>"11904 Detroit Ave",
"city"=>"Lakewood",
"state"=>"OH",
"zip"=>"44107",
"parkings_attributes"=>
{"0"=>
{"none"=>"1",
"street_free"=>"0"
}
}
},
"commit"=>"Create Venue"}
Unpermitted parameters: parkings_attributes
(0.2ms) BEGIN
SQL (107.0ms) INSERT INTO "venues" (
"address",
"city",
"created_at",
"name", "state",
"updated_at", "zip"
) VALUES ($1, $2, $3, $4, $5, $6, $7) RETURNING "id"
[
["address", "11904 Detroit Ave"],
["city", "Lakewood"],
["created_at", Tue, 29 Apr 2014 19:02:54 UTC +00:00],
["name", "The Five O'Clock Lounge"],
["state", "OH"],
["updated_at", Tue, 29 Apr 2014 19:02:54 UTC +00:00],
["zip", 44107]
]
SQL (47.5ms) INSERT INTO "parkings" (
"created_at",
"updated_at",
"venue_id") VALUES ($1, $2, $3) RETURNING "id"
[
["created_at", Tue, 29 Apr 2014 19:02:54 UTC +00:00],
["updated_at", Tue, 29 Apr 2014 19:02:54 UTC +00:00],
["venue_id", 10]
]
(0.6ms) COMMIT
Redirected to http://localhost:3000/venues/10
Completed 302 Found in 165ms (ActiveRecord: 155.2ms)
更新:已解决
按照的建议,我能够通过未经许可的参数错误。更新
场馆参数
方法如下:
def venue_params
params.require(:venue).permit(
:name,:address,:city,:state,:zip,
parkings_attributes: [:id, :venue_id, :none, :street_free])
end
注意parkings\u属性
(复数停车)而不是停车属性
(单数停车)
由于您在
场馆
和停车
模型之间有1-M关系,您将在参数
散列中收到停车属性
(复数停车),但在场馆参数
的当前代码中,您将停车属性
(单数停车)。这导致警告未被允许的参数:停车属性谢谢你,科蒂,这也帮了我的忙!
%h1 Add a new venue
= form_for @venue do |f|
= f.label :name
= f.text_field :name
= f.label :address
= f.text_field :address
= f.label :city
= f.text_field :city
= f.label :state
= f.text_field :state
= f.label :zip
= f.text_field :zip
= f.fields_for :parkings do |p|
= p.label :none
= p.check_box :none
= p.label :street_free
= p.check_box :street_free
= f.submit
Started POST "/venues" for 127.0.0.1 at 2014-04-29 14:02:54 -0500
Processing by VenuesController#create as HTML
Parameters: {"utf8"=>"✓",
"authenticity_token"=>"kMcVVwXq7f22rIGm1rQ6+QzC80ScmXrVA2IE8TGbN7w=",
"venue"=>{"name"=>"The Five O'Clock Lounge",
"address"=>"11904 Detroit Ave",
"city"=>"Lakewood",
"state"=>"OH",
"zip"=>"44107",
"parkings_attributes"=>
{"0"=>
{"none"=>"1",
"street_free"=>"0"
}
}
},
"commit"=>"Create Venue"}
Unpermitted parameters: parkings_attributes
(0.2ms) BEGIN
SQL (107.0ms) INSERT INTO "venues" (
"address",
"city",
"created_at",
"name", "state",
"updated_at", "zip"
) VALUES ($1, $2, $3, $4, $5, $6, $7) RETURNING "id"
[
["address", "11904 Detroit Ave"],
["city", "Lakewood"],
["created_at", Tue, 29 Apr 2014 19:02:54 UTC +00:00],
["name", "The Five O'Clock Lounge"],
["state", "OH"],
["updated_at", Tue, 29 Apr 2014 19:02:54 UTC +00:00],
["zip", 44107]
]
SQL (47.5ms) INSERT INTO "parkings" (
"created_at",
"updated_at",
"venue_id") VALUES ($1, $2, $3) RETURNING "id"
[
["created_at", Tue, 29 Apr 2014 19:02:54 UTC +00:00],
["updated_at", Tue, 29 Apr 2014 19:02:54 UTC +00:00],
["venue_id", 10]
]
(0.6ms) COMMIT
Redirected to http://localhost:3000/venues/10
Completed 302 Found in 165ms (ActiveRecord: 155.2ms)
def venue_params
params.require(:venue).permit(
:name,:address,:city,:state,:zip,
parkings_attributes: [:id, :venue_id, :none, :street_free])
end