我是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.x
和3.x
例子感到困惑,但如果你能给我一些好的例子,我会非常感激宝石或只是写我应该怎么做:)提前谢谢!
答案 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。