我遇到这种奇怪的行为与嵌套params。 当我尝试保存表单,它说Unpermitted parameter: organization_type
奇怪的行为与嵌套params
为我的组织型我只有一个模型,但我不认为这应该是问题,因为属性在用户控制器被处理的,按我的理解
我试图在窗体和控制器白名单中具有属性作为organization_type(单数),但这不起作用。
但是,在表格中,如果我有:organization_types
该字段不会显示出来。
我真的很困惑这一点。
所以,作为一个快速回顾:
- 我没有为OrganizationType
- 控制器在表单中我有:
:organization_type
。如果我以复数它不显示 - 在控制器白名单上有:
:organization_types_attributes
- 用户模型中我有:HAS_MANY和accepts_nested为
:organization_types_attributes
用户模型
class User < ActiveRecord::Base
has_many :events
has_many :organization_types
accepts_nested_attributes_for :organization_types
end
组织类型型号
class OrganizationType < ActiveRecord::Base
belongs_to :user
ORG_TYPES = ['health', 'non-profit', 'foo', 'bar']
end
User Co ntroller
class UsersController < ApplicationController
before_action :set_user, only: [:show, :edit, :update, :destroy]
before_filter :authenticate_user!
...
def user_params
params.require(:user).permit(:name, ..., organization_types_attributes: [:id, :user_id, :org_type, '_destroy'])
end
用户表单
<%= form_for(@user) do |f| %>
...
<div class="field">
<%= f.label :organization_type %><br>
<%= f.fields_for :organization_type do |builder| %>
<%= builder.select :org_type, options_for_select(OrganizationType::ORG_TYPES) %><br/>
<% end %>
</div>
<% end %>
我改变了我的模型HAS_ONE ......并按照所提到的文件@Ren和现在它似乎在工作。我注意到的两件事是。 1.我的选择帮手没有显示上次保存的内容。我试过这个'<%= builder.select:org_type,options_for_select(OrganizationType :: ORG_TYPES,:selected => @ user.organization_type.org_type)%>' - 2.而不是更新记录,而是创建一个新记录 – Marrento