2016-05-31 18 views
0

私は1対多の関連付けを持つ2つのモデルAccountを持っていて、複数のUserを持っています。1対多の依存関係を持つ2つのモデルを作成するレールにフォームを追加するにはどうすればよいですか?

私はそのアカウントの最初のユーザーも作成するアカウントのサインアップフォームを持っています。

マイAccountモデル:

class Account < ActiveRecord::Base 
    has_many :users, dependent: :destroy 
    validates :name, presence: true, length: { maximum: 100 } 
end 

マイUserモデル:

class User < ActiveRecord::Base 
    belongs_to :account 
    validates :account_id, presence: true 

私はアカウントと同時にユーザーを作成し、何がで行く必要があるフォームを作成するにはどうすればよいです私のaccounts_controllerと私のusers_controller

答えて

0

これは、このように入れ子フォームで行うことができます。

class Account < ActiveRecord::Base 
    has_many :users, dependent: :destroy 
    accepts_nested_attributes_for :users 
    validates :name, presence: true, length: { maximum: 100 } 
end 

あなたのアカウントのフォームでは、「accounts_for」ヘルパーがそのアカウントのユーザーのフィールドを追加します。

 <div class="field"> 
2  <%= f.label :account_field1%><br> 
3  <%= f.text_field :account_field1%> 
4 </div> 
5 
6 <h2>Users</h2> 
7  <%= f.fields_for :users do |user| %> 
8   <div class="user_fields"> 
9   <div class="field"> 
10   <%= user.label :name %><br> 
11   <%= user.text_field :name %> 
12   </div> 
13  </div> 
14  <% end %> 

accounts_controllerでは、コントローラの強力なパラメータのホワイトリストにusers_attributesを追加します。

private 
def account_params 
    params.require(:account).permit(:account_field1, users_attributes: [ :id, :name ]) 
end