在显示参考书目的页面上,我添加了添加评论的可能性。
这些是我的模特:
class Biblio < ApplicationRecord
has_many :comments, as: :commentable
和
class Comment < ApplicationRecord
belongs_to :commentable, polymorphic: true
这是发表评论的形式:
<%= form_for @biblio.comments.build, url: administration_create_comment_path do |f| %>
<%= f.text_field :texte_comment %>
<%= f.submit %>
评论控制器包含这个:
def create
@comment = Comment.new(comment_params)
@comment.save
end
def comment_params
params.require(:comment).permit(
:texte_comment
)
end
我的问题是:如何获取commentable_type
commentable_id
和@biblio.comments.build
因为当我在rails控制台中使用它时,它就像一个魅力:
b = Biblio.find(115)
b.commentaires.build
=> #<Commentaire id: nil, utilisateur_id: nil, texte_comment: nil, created_at: nil, updated_at: nil, commentable_type: "Biblio", commentable_id: 115>
换句话说:在控制台中有什么作用,如何在控制器中获取?
答案 0 :(得分:1)
您需要在表单提交时发送biblio的ID,方法是将其添加为表单中的隐藏字段:
<%= f.hidden_field :commentable_id %>
现在在您的控制器中,您可以使用以下参数查询id:
def create
biblio = Biblio.find_by_id(params[:comment][:commentable_id])
@comment = biblio.commentaires.build(comment_params)
@comment.save
end