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