我有以下问题。我正在写一个简单的博客来学习rails。我的项目主要基于脚手架。简化中,我有2个模型:帖子和评论。 Post有很多评论。
我正在使用嵌套资源:
resources :posts do
resources :comments
end
在帖子的节目动作中,我列出了所有帖子的评论,我有表格用于创建新评论,一切正常。但是当我想编辑评论时遇到问题,我在评论编辑中得到“NoMethodError”。
undefined method `comment_path' for #<#<Class:0x007fe554980ad0>:0x007fe5569fedc0>
Did you mean? font_path
Rails指南对我没有帮助。
我的代码:
PostController中的
def show
@comments = @post.comments
@comment = Comment.new
end
在帖子的视图中(通过评论部分列出评论)
<%= link_to 'Edit', edit_post_comment_path(@post, comment)%>
CommentController中的
def edit
end
在评论的视图中
<%= render 'form' %>
和部分表格
<%= form_for([@post, @comment]) do |f| %>
<div class="field">
<%= f.label :content %><br>
<%= f.text_field :content %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
这一行
<%= form_for([@post, @comment]) do |f| %>
给了我一个例外。
答案 0 :(得分:1)
看起来@post
为零,因此[@post, @comment]
实际上被评估为[nil, @comment]
,它正在尝试映射到comments_path
路由。
确保在控制器中指定@post
:@post = Post.find(...)