1

私はこの質問が何度も聞かれたことを知っています。私はすでに問題なく何度もアプリにネストfields_forしているので、今回はなぜ機能しないのか混乱しています。このトピックを再度取り上げたことをお詫び申し上げます。

ユーザーモデルがあります。ユーザーは多くのアカウントを持つことができます。ユーザーが少なくとも1つのアカウントなしで存在するのを防ぐために、アカウントsemantic_fields_forを設定するための1つの入力だけで、新しいユーザーフォームにネストされています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_attributessemantic_fields_for正しく設定されています。私が得るエラーは次のとおりです。

保護された属性を一括割り当てできません:アカウント

送信されたフォームのスタックトレースには、すべての正しい変数が含まれています。アカウントrole_idはネストされた属性によって正しく設定されています。レコードは、一括割り当てエラーのために単に拒否されていますが、私の属性はすべて適切に保護されているようです。

Rails3.2.3およびFormtastic2.2の使用。

編集済み

クラス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 %>
4

2 に答える 2

0

とった!!:url =>を削除し、semantic_form_forブロックで:userを@userに変更しました...これまでの方法で、params [:account]が一括割り当てを開始したと思います

于 2012-10-02T06:08:53.350 に答える
-1

これをユーザークラスに追加してみてください

attr_accessible :accounts_attributes
于 2012-05-11T17:23:54.567 に答える