Ruby on rails 如何获取多态关联中的类型和id
在显示参考书目的页面上,我添加了添加注释的可能性 这些是我的模型:Ruby on rails 如何获取多态关联中的类型和id,ruby-on-rails,Ruby On Rails,在显示参考书目的页面上,我添加了添加注释的可能性 这些是我的模型: class Biblio < ApplicationRecord has_many :comments, as: :commentable 我的问题是:如何获取在@biblio.comments.build中创建的可注释类型和可注释id 因为当我在rails控制台中使用它时,它就像一个符咒: b = Biblio.find(115) b.commentaires.build => #<Commenta
class Biblio < ApplicationRecord
has_many :comments, as: :commentable
我的问题是:如何获取在@biblio.comments.build中创建的可注释类型和可注释id
因为当我在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>
换句话说:控制台中的工作原理是什么,我如何在控制器中获得它?您需要在表单提交中发送biblio的id,将其添加为表单中的隐藏字段:
<%= f.hidden_field :commentable_id %>
谢谢。这就是我所做的,它当然有效。但是,这意味着我调用了方法build两次:一次在@biblio.comments.build的表单_中,一次在控制器biblio.commentals.buildcomment_参数中。这就是我有点惊讶的地方。谢谢
def create
@comment = Comment.new(comment_params)
@comment.save
end
def comment_params
params.require(:comment).permit(
:texte_comment
)
end
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>
<%= f.hidden_field :commentable_id %>
def create
biblio = Biblio.find_by_id(params[:comment][:commentable_id])
@comment = biblio.commentaires.build(comment_params)
@comment.save
end