Ruby On Railsで質問に対してのBA機能
Railsで知恵袋のようなBA機能を実装しようと奮闘していますが、アソシエーションに対しての理解ができておらずに、はまっています。
やりたいこととしては、投稿されたnoteに対して、note.idを取得する。
また、そのnoteに紐づいたコメントのcomment.idを取得する。
取得した情報をBestAnswerモデルに格納する。
現状の構成とエラーが以下になります。
------------モデル-----------------------
class BestAnswer
belongs_to :note
has_one :comment
end
class Note
has_one :best_answer
end
class Comment
belongs_to :best_answer
end
------------コントローラー-----------------------
class BestAnswersController < ApplicationController
def best
note = Note.find(params[:note_id])
bestanswer = note.best_answer.build(comment: params[:comment])
bestanswer.save
redirect_to (:back), notice: 'hogehoge'
end
end
------------ビュー-----------------------
<% @note.comments.each do |comment| %>
<%= "#{comment.user.name}さんが、#{comment.body}と言っています %>
<%= link_to "BAに決定", best_path(:comment => comment.id, :note_id => @note.id), method: :post %>
<% end %>
------------エラー------------------------
Processing by BestAnswersController#best as HTML
Parameters
{"authenticity_token"=>"DtGJ+4qzzG2PqEJpa7GH9Fb8pQhGDX0cg+w+qhf0tP/9HIIVYabiJeW0rEiL7iydpa5PpjrdR1V1LeGzfOeJjw==", "comment"=>"43", "note_id"=>"36"}
Note Load (0.2ms) SELECT "notes".* FROM "notes" WHERE "notes"."id" = ? LIMIT 1 [["id", 36]]
Comment Load (0.3ms) SELECT "comments".* FROM "comments" WHERE "comments"."id" = ? LIMIT 1 [["id", 43]]
Completed 500 Internal Server Error in 34ms (ActiveRecord: 1.1ms)
ActiveRecord::AssociationTypeMismatch (Comment(#70182053951140) expected, got Fixnum(#15377440)):
app/controllers/best_answers_controller.rb:5:in `best'
ここで、エラーがでるのですが、どうすればいいでしょうか?
よろしくお願いします。