Rails 4将评论与博客联系起来

时间:2014-10-09 16:00:13

标签: ruby-on-rails ruby ruby-on-rails-4 model-view-controller

我有一个带有博客和评论的rails应用程序,每篇博文都有很多评论。在每个博客(show action)中,我都可以在表单上提交评论。我的问题是我需要将评论中的blog_id与我正在查看的博客相关联,我可以将其作为隐藏视图传递,但我要求最好的方法来做到这一点,也许是一个我不知道的帮助。

<h3>Leave a reply</h3>

<% @blog.comments.each do |comment| %>
 <p>
   <%= comment.text %>
 </p>

<% end %>


<%= form_for(Comment.new) do |f| %>

  <%= f.text_field :name %>
  <%= f.text_area :text %>
  <%= f.hidden_field :blog %>


  <%= f.submit %>
<% end %>

1 个答案:

答案 0 :(得分:3)

初始化新评论时,请通过博客实例进行初始化。

  def show
    @blog = Blog.find(params[:id])
    @comment = @blog.comments.build
  end

然后,在您的表单中,您希望使用注释实例而不是初始化新注释:

<%= form_for(@comment) do |f| %>

假设您拥有正确的关系,评论将自动拥有博客ID。

在创建操作中,您需要确保通过博客实例创建注释。

  def create
    @blog = Blog.find(params[:id])
    @comment = @blog.comments.build(comment_params)
    if @comment.save
      # etc ...
  end

虽然将评论与博客相关联可能不是一个好的设计决定,具体取决于您想要做什么,除非博客是指帖子。