我无法弄清楚为什么这个嵌套表单不起作用。技能belongs_to个人资料和个人资料has_many技能。出于某种原因,在提交表单时,服务器日志显示以下错误:
Parameters: {"utf8"=>"✓", "authenticity_token"=>"gdskfkjsdflkdjshgk",
"profile"=>{"skill"=>{"label"=>"PHP"}}, "commit"=>"ADD +", "id"=>"134"}
Unpermitted parameters: skill
以下是表单代码:
<%= form_for @profile do |f| %>
<%= f.fields_for :skill do |builder| %>
<%= builder.select :label, @crafts.collect {|craft| craft.label},
{include_blank: true} %>
<% end %>
<%= f.submit "ADD +", :id => "clickme", :class => 'button button-add' %>
<% end %>
以下是配置文件控制器中的强参数:
params.require(:profile).permit( skill_attributes: [:label, :id])
以下是表单操作的编辑控制器:
def edit
@profile = current_user.profile
@skill = Skill.new #field for new skill
end
以下是配置文件模型的相关部分:
class Profile < ActiveRecord::Base
has_many :skills
accepts_nested_attributes_for :skills, :allow_destroy => true
end
我使用“skill_attributes”和“f.fields_for:skill”的原因是因为我只希望一次创建/更新一项技能并使用复数在页面上放置两个输入。
答案 0 :(得分:0)
您的表单(技能)与accepts_nested_attributes(skills_attributes)的预期不符。您可以使用我认为:
= fields_for "profile[skills_attributes]" do |builder|