任何acts_as_commentable_with_threading示例?

时间:2012-04-26 22:57:21

标签: ruby-on-rails ruby-on-rails-3 rubygems

我是Ruby on Rails的新手,目前我正在尝试创建一个简单的博客平台。我想用acts_as_commentable_with_threading gem实现评论功能。我对嵌套表格不是很熟悉,但这是我的尝试:

comments_controller.rb

class CommentsController < ApplicationController
  before_filter :get_spot

  # GET /comments/new
  def new
    @comment = Comment.new

    respond_to do |format|
      format.html
    end
  end

  private
    def get_spot
      @spot = Spot.find(params[:spot_id])
    end    
end

_form.html.erb

<%= form_for(@comment) do |f| %>
  ... form elements ...
<% end %>

但它给了我undefined method 'comments_path'错误。我确定我是以非常错误的方式做这件事,因为我对2.x3.x例子感到困惑,但如果你能给我一些好的例子,我会非常感激宝石或只是写我应该怎么做:)提前谢谢!

1 个答案:

答案 0 :(得分:1)

确保您已设置评论控制器的路由。

# routes.rb
...
resources :comments
...

更新

根据以下评论,路线嵌套在帖子下。在这种情况下,您将获得一条路径,例如“#{RAILS_ROOT} / posts / 1 / comments”,您可以(http)发布评论。但是,您的表单正在尝试POST到“#{RAILS_ROOT} / comments”,因此出错。在这种情况下,您需要在posts / show.html.erb中添加表单构建器:

<p>
  <b>Name:</b>
  <%= @post.name %>
</p>

<p>
  <b>Title:</b>
  <%= @post.title %>
</p>

<p>
  <b>Content:</b>
  <%= @post.content %>
</p>

<h2>Add a comment:</h2>
<%= form_for([@post, @post.comments.build]) do |f| %>
  <div class="field">
    <%= f.label :commenter %><br />
    <%= f.text_field :commenter %>
  </div>
  <div class="field">
    <%= f.label :body %><br />
    <%= f.text_area :body %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

请参阅提取此代码的Rails getting started guide