質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

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

Q&A

解決済

1回答

377閲覧

【Rails 5】フォームを経由した中間テーブルへの値の渡し方について

hikonii

総合スコア13

Ruby on Rails 5

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

0グッド

0クリップ

投稿2018/10/08 16:12

前提・実現したいこと

Ruby on Railsでtwitterクローンアプリに「お気に入り機能とコメント機能を併せ持った機能」を実装しようとしています。具体的には、お気に入りボタンを押すと、コメント欄と送信ボタンを持ったModalが表示される仕様です。送信後にお気に入りボタンをもう一度押すとコメント等はリセットされます。

テーブルにはUser, Micropost, Favoriteがあり、Favoriteは他の2テーブルを結び多対多を表現するための中間テーブル。

発生している問題・エラーメッセージ

書籍でのお気に入り機能の実装の方法を見本に進め、それにフォームを加えただけのためなのか、送信ボタンを押してもコメントがテーブルに値として保存されません(ユーザや投稿のidは保存される)。どうすれば全ての値がフォームから渡せるかが知りたいです。

該当のソースコード

Ruby

1フォームのコード(Modal部分は省略) 2<%= form_for(current_user.favorites.build) do |f| %> 3 <%= hidden_field_tag :like_id, micropost.id %> 4 <div class="form-group"> 5 <%= f.label :comment, 'コメント' %> 6 <%= f.text_field :comment, class: 'form-control' %> 7 </div> 8<%= f.submit '送信', class: 'btn btn-primary btn-ms' %>
favorites_controllerの該当箇所 def create micropost = Micropost.find(params[:like_id]) current_user.favorites.find_or_create_by(like_id: micropost.id) flash[:success] = '送信しました。' redirect_to :back end
modelの該当箇所 def change create_table :favorites do |t| t.references :user, foreign_key: true t.references :like, foreign_key: { to_table: :micropost} t.string :comment t.timestamps t.index [:user_id, :like_id], unique: true end end

試したこと

いくつかの異なるフォームの書き方を参考にしましたが、どれもコメントは保存されませんでした。

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

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

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

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

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

guest

回答1

0

ベストアンサー

コントローラーでcommentの値を全く見ていないので、データは回収されません。

値の回収方法については「Strong Parameters」などで調べてみましょう。

投稿2018/10/08 22:50

maisumakun

総合スコア145183

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

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

hikonii

2018/10/09 05:04

解決しました!本当に助かりました、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問