我知道这个问题已被问过很多次了。我已经多次在我的应用程序中嵌套fields_for
没有问题,所以我很困惑为什么这次不能正常工作。我为再次提出这个话题而道歉。
我有一个用户模型。用户可以拥有多个帐户。为了防止用户现在没有至少一个帐户,我在新用户表单中嵌套了semantic_fields_for
,只有一个用于设置帐户role_id
的输入。
attr_accessible :accounts_attributes
has_many :accounts, :dependent => :destroy
accepts_nested_attributes_for :accounts
attr_accessible :role_id, :user_id, :status
belongs_to :role
belongs_to :user
<%= f.semantic_fields_for :accounts do |account| %>
<%= account.input :role, :as => :select, :collection => @roles, :label => "Account" %>
<% end %>
因此,回顾一下:我在用户和帐户之间设置了关联,用户模型包含accepts_nested_attributes_for
,用户模型包括attr_accessible :accounts_attributes
,semantic_fields_for
已正确设置。我得到的错误是:
无法批量分配受保护的属性:帐户
提交表单中的堆栈跟踪包含所有正确的变量。帐户role_id
由嵌套属性正确设置。该记录只是因质量分配错误而被拒绝,但看起来我的属性似乎都得到了适当的保护。
使用Rails 3.2.3和Formtastic 2.2。
EDITED
类UsersController
def new
@user = User.new
@user.accounts.build
端
用户/新
<%= semantic_form_for :user, :url => users_path do |f| -%>
<%= f.inputs do %>
<%= f.input :name %>
<%= f.input :username %>
<%= f.input :email %>
<%= f.input :password, :as => :password %>
<%= f.input :password_confirmation, :label => "Confirm Password", :as => :password %>
<%= f.input :school_id, :as => :hidden, :input_html => {:value => @school.id} %>
<%= f.semantic_fields_for :accounts do |account| %>
<%= account.input :role_id, :as => :select, :collection => @roles %>
<% end %>
<%- end -%> <%# END f.inputs do %>
<%= submit_tag 'Create User', :class => "button" %>
<%- end -%> <%# END form %>
答案 0 :(得分:0)
GOT IT !!我删除了:url =&gt;并更改:用户在semantic_form_for块中的@user ...我想我的方式是导致params [:account]引发质量分配
答案 1 :(得分:-1)
尝试将此添加到您的用户类
attr_accessible :accounts_attributes