前提・実現したいこと
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
試したこと
いくつかの異なるフォームの書き方を参考にしましたが、どれもコメントは保存されませんでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/09 05:04