🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Q&A

解決済

1回答

1217閲覧

中間テーブルにデータを保存したい!

hatopopo21

総合スコア40

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

0グッド

0クリップ

投稿2021/02/01 15:32

現状

一つの画面で処理を完結できるようにアプリを開発しています。
ルームを作成後、ルームテーブルだけでなく、中間テーブルにもデータを保存できるようにしようと思いました。

解決したいこと

中間テーブルに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("");

行ったこと

ルームテーブルの保存は正常にできており、非同期通信でビューにも表示されているので大丈夫だど思っていましたが、
うまくいきません。
調べたりしましたが、分からずどなたか何かアドバイスをいただけないでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Room作成時には userは作成者だけ、paramsには情報がない、ということですね?
いくつか方法があるかと思いますが、
@roomがcreaetしたあとで、 @room.users = [current_user]
が簡単かな

投稿2021/02/01 22:54

winterboum

総合スコア23567

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hatopopo21

2021/02/01 23:48

解決しました! ありがとうございます!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問