group_userテーブル(中間テーブル)とgroupテーブルの両方に一つのフォームからデータを送りたい
親にuser, group, 子にgroup_userをもつモデルを作っているのですが、グループ登録画面から一つのフォームでgroup_userテーブル(中間テーブル)とgroupテーブルの両方にデータを送りたいです。調べつつやってはみているのですが、中間テーブルの方にどうしてもデータを送ることができません。
groupテーブルにはデータが送られています。
コード
rb
1class Group < ApplicationRecord 2 3 has_many :users, through: :group_users 4 has_many :group_users 5 accepts_nested_attributes_for :group_users 6 7 validates :name, {presence: true} 8end 9
rb
1class GroupUser < ApplicationRecord 2 belongs_to :user, optional: true 3 belongs_to :group, optional: true 4end 5
html
1<div class="main groups-new"> 2 <div class="container"> 3 <div class="form-heading">グループ作成</div> 4 <div class="form groups-form"> 5 <div class="form-body"> 6 7 <%= form_for @group, url: groups_path, html: { method: :post } do %> 8 <label for="name">名前</label> 9 <input id="name" name="name" /> 10 11 12 <%= fields_for :group_users do %> 13 <label for="group_id">グループID</label> 14 <input id="group_id" name="group_id" /> 15 <input type="submit" value="登録"> 16 <% end %> 17 <% end %> 18 19 20 </div> 21 </div> 22 </div> 23</div>
rb
1class GroupsController < ApplicationController 2 def index 3 end 4 def show 5 end 6 def new 7 @group = Group.new 8 @group.group_users.build 9 end 10 def create 11 @group = Group.new( 12 name: params[:name], 13 group_id: params[:group_id] 14 ) 15 if @group.save 16 flash[:notice] = "グループ登録が完了しました" 17 redirect_to("/main") 18 else 19 render("groups/new") 20 end 21 end 22 23 private 24 25 def group_params 26 params.require(:group).permit(:name, group_users_attributes: [:id, :group_id]) 27 end 28end
試したこと
fields_forを使うといいらしいがうまくいかない(使い方がよくわからない)
補足情報
Ruby 2.2.3
rails 5
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/13 06:57
2018/11/15 02:08 編集