【发布时间】:2017-03-16 13:13:17
【问题描述】:
为什么为什么为什么...?
三个模型(FirstModel、SecondModel、JoinedModel),JoinedModel 属于其他两个和其他两个has_many,通过JoinedModel。
JoinedModel accepts_nested_attributes_for first_model 和 second_model。
它还验证first_model_id 和second_model_id 的存在。
加入模型强参数:
private
def joined_params
params.require(:joined_model).permit(:first_model_id, :second_model_id,
:first_models_attributes => [:id, :name],
:second_models_attributes => [:id, :full_name])
end
JoinedModel 的 _form:
<%= form_for(joined_model) do |f| %>
<%= f.fields_for :second_models do |ff| %>
<%= ff.select(SecondModel.all.map {|c| [ c.full_name, c.id ] }, { include_blank: true }) -%>
(和 FirstModel 相同的 f.fields_for)
当我提交这个表单时,我得到了
不允许的参数 first_models, second_models
并查询:
参数:{"utf8"=>"✓", "authenticity_token"=>"gvW/OrOXJruAK0ZD+uoajJ4N+dZvpmZF8Ay0TOKF9HPO19d4tRBoWz0C4VoaABYat8KzrryL8lp5ax+Y9ZJRg==", "joined_model"=>{"first_models"=>{"first_model_id"=>"1"}, "second_models"=>{"second_model_id"=>"1"}}, "commit"=>"创建加入 型号”}
我不知道为什么,如何等表单尝试发送哈希 - "second_models"=>{"second_model_id"=>"1"} 它应该就像 "second_model_id"=>"1" 一样,如果我的表单使用简单的 f.number_field :first_model_id 而不是 select,它会这样做。 .
【问题讨论】:
-
你应该在你的答案中添加一个答案,然后接受它。感觉很奇怪,但绝对可以接受(并鼓励)!另外,也许考虑一个更清晰的标题?当其他人遇到此问题时,我们如何帮助他们找到解决方案?
-
是的,好主意,我会发布的。关于标题,我觉得这样更好——很多相关的关键词(想不出其他关键词了:))))
-
您的标题应该是简洁、相关的问题或问题陈述。搜索在没有关键字加载的情况下运行良好。 ;)
-
嗯,也许是的,机器变得更智能的时候到了……我会修复它:) thx
标签: ruby-on-rails-5 nested-forms strong-parameters fields-for