現状
一つの画面で処理を完結できるようにアプリを開発しています。
ルームを作成後、ルームテーブルだけでなく、中間テーブルにもデータを保存できるようにしようと思いました。
解決したいこと
中間テーブルにroom_idとuser_idを保存できるようにしたい。
ruby
1user.rb:model 2 3has_many :room_user 4 has_many :rooms, through: :room_users 5 has_many :memos 6 7room.rb:model 8 9has_many :room_users 10 has_many :users, through: :room_users 11 has_many :memos
ruby
1room_controller.rb 2 3def create 4 @room = Room.create(room_params) 5 @rooms = Room.all.order(id: "DESC") 6 end 7 8 def destroy 9 room = Room.find(params[:id]) 10 room.destroy 11 redirect_to root_path 12 end 13 14 private 15 def room_params 16 params.require(:room).permit(:name, user_ids: [current_user.id]) 17 end
ruby
1index.html.erb 2 3<div class="wrapper"> 4 <div class="left-side"> 5 <%= render "left_side_bar" %> 6 </div> 7 <div class="main-memo"> 8 <%#= render "main_memo" %> 9 </div> 10 <div class="right-side"> 11 <%= render "right_side_bar" %> 12 </div> 13</div>
ruby
1_left_side.html.erb 2 3<div class="rooms"> 4 <div id="room-form"> 5 <%= render partial: 'rooms/form', locals: { room: @room } %> 6 </div> 7 8 <div class="room"> 9 <div id="room"> 10 <%= render "rooms/room", {rooms: @rooms} %> 11 </div> 12 </div> 13</div>
ruby
1_form.html.erb 2 3<%= form_with(model: @room, id: "room-form") do |form| %> 4 <div class="form", name="room[user_ids][]"> 5 <%= form.text_field :name, id: "name" %> 6 <%= form.submit '作成', id: "submit" %> 7 </div> 8 <% end %>
ruby
1 2_room.html.erb 3 4<div class="room_area"> 5 <% @rooms.each do |room| %> 6 <div class="rooms"> 7 <%= link_to room.name, room_memos_path(room), id: "room-name"%> 8 </div> 9 <% end %> 10</div>
jquery
1creat.js.erb 2 3$("#room").html("<%= j(render("room", rooms: @rooms)) %>"); 4$("#name").val("");
行ったこと
ルームテーブルの保存は正常にできており、非同期通信でビューにも表示されているので大丈夫だど思っていましたが、
うまくいきません。
調べたりしましたが、分からずどなたか何かアドバイスをいただけないでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/01 23:48