やりたいこと
タイトルの通り、Ruby on Railsでベストアンサー機能を実装したいです。
わからないこと
いいね機能は user_id, post_idの二つのデータの組み合わせですが。
ベストアンサー機能は user_id, post_id, answer_id の三つデータの組み合わせでうまくいきません。
コード
<%= link_to("/stars/#{answer.id}/create", {method: "post"}) do %> <i class="fas fa-medal"></i> <% end %>
ちなみにここではベストアンサーは Star で表しています。
class StarsController < ApplicationController def create @star = Star.new( user_id: @current_user.id, post_id: params[:post_id], answer_id: params[:answer_id] ) @star.save! redirect_to("/posts/#{params[:post_id]}") end end
@current_user が自分の post_id のベストアンサーを任意の answer_idから選び、ベストアンサーに選ぶときの Contollerは以上のように書きましたがすると以下のエラーが出ます。
バリデーションに失敗しました: Postを入力してください, Postを入力してください answer_id: params[:answer_id] ) @star.save! redirect_to("/posts/#{params[:post_id]}") end end
answer_id のモデルの中身は以下の通りです。
class Answer < ApplicationRecord belongs_to :post belongs_to :user has_one :stars validates :user_id, presence: true validates :post_id, presence: true validates :title, presence: true validates :content, presence: true end
starモデルの中身は以下の通りです
class Star < ApplicationRecord validates :user_id, presence: true validates :post_id, presence: true validates :answer_id, presence: true belongs_to :post belongs_to :answer belongs_to :user end
どうかお力を貸してくれたら幸いです
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/20 13:12
2020/07/20 13:17
2020/07/20 13:48