Rails 4 嵌套 fields_for 未保存
Rails 4 nested fields_for not saving
我看到很多帖子,但不确定它们是否适用于我的问题。主要是因为当我尝试实施这些解决方案时,我遇到了语法错误。我不知道为什么这似乎是个问题。
我的配置文件对象与用户有 1:1 关系。在个人资料的编辑中,我想保存用户的电子邮件。但是这里不会保存是代码和输出...
查看:
= semantic_form_for @profile do |f|
= f.inputs class: "form-group" do
= f.input :name, input_html: { class: "form-control" }
= f.input :username, input_html: { class: "form-control" }
= f.semantic_fields_for @profile.user do |u|
= u.input :email, input_html: { class: "form-control" }
传递给控制器的参数:
{"utf8"=>"✓", "_method"=>"patch", "authenticity_token"=>"iMkkLX6qN7PagmbnEQlQZ0CH5Q/fl+G9273eHFO9aRk8EG4MisEi3PwQOWocU2wp3UW5ju4DOJcUh5v19pS46A==", "profile"=>{"name"=>"John Doe", "username"=>"JohnnyD", "user"=>{"email"=>"jdoe@email.com"}, "commit"=>"Save", "controller"=>"profiles", "action"=>"update", "id"=>"4"}
控制器的响应:
Unpermitted parameter: user
白名单:
params.require(:profile).permit(:name, :username, :user)
模特:
class Profile < ActiveRecord::Base
belongs_to :user
accepts_nested_attributes_for :user
end
class User < ActiveRecord::Base
has_one :profile, :dependent => :destroy
end
我尝试将 users_attributes: [:email] 添加到所需的参数中 #syntax 错误。
我尝试将用户:[:电子邮件] 添加到所需的 prarams #syntax error
我试过在模型中使用和不使用 accepts_nested_attributes #no effect.
谁能告诉我,因为我显然一无所知。
谢谢。
我看到两个问题:
第一个 - = f.semantic_fields_for @profile.user do |u|
应该是:
= f.semantic_fields_for users do |u|
(这里是告诉Rails选择相关的数据库table,所以应该是复数users
)
其次 - strong params 应该真的像你已经尝试过的那样:
params.require(:profile).permit(:name, :username, users_attributes: [:email])
希望它能解决您的问题。
我看到很多帖子,但不确定它们是否适用于我的问题。主要是因为当我尝试实施这些解决方案时,我遇到了语法错误。我不知道为什么这似乎是个问题。
我的配置文件对象与用户有 1:1 关系。在个人资料的编辑中,我想保存用户的电子邮件。但是这里不会保存是代码和输出...
查看:
= semantic_form_for @profile do |f|
= f.inputs class: "form-group" do
= f.input :name, input_html: { class: "form-control" }
= f.input :username, input_html: { class: "form-control" }
= f.semantic_fields_for @profile.user do |u|
= u.input :email, input_html: { class: "form-control" }
传递给控制器的参数:
{"utf8"=>"✓", "_method"=>"patch", "authenticity_token"=>"iMkkLX6qN7PagmbnEQlQZ0CH5Q/fl+G9273eHFO9aRk8EG4MisEi3PwQOWocU2wp3UW5ju4DOJcUh5v19pS46A==", "profile"=>{"name"=>"John Doe", "username"=>"JohnnyD", "user"=>{"email"=>"jdoe@email.com"}, "commit"=>"Save", "controller"=>"profiles", "action"=>"update", "id"=>"4"}
控制器的响应:
Unpermitted parameter: user
白名单:
params.require(:profile).permit(:name, :username, :user)
模特:
class Profile < ActiveRecord::Base
belongs_to :user
accepts_nested_attributes_for :user
end
class User < ActiveRecord::Base
has_one :profile, :dependent => :destroy
end
我尝试将 users_attributes: [:email] 添加到所需的参数中 #syntax 错误。 我尝试将用户:[:电子邮件] 添加到所需的 prarams #syntax error 我试过在模型中使用和不使用 accepts_nested_attributes #no effect.
谁能告诉我,因为我显然一无所知。
谢谢。
我看到两个问题:
第一个 - = f.semantic_fields_for @profile.user do |u|
应该是:
= f.semantic_fields_for users do |u|
(这里是告诉Rails选择相关的数据库table,所以应该是复数users
)
其次 - strong params 应该真的像你已经尝试过的那样:
params.require(:profile).permit(:name, :username, users_attributes: [:email])
希望它能解决您的问题。