编辑嵌套资源会产生异常

时间:2016-05-01 21:10:12

标签: ruby-on-rails ruby ruby-on-rails-4

我有以下问题。我正在写一个简单的博客来学习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| %>

给了我一个例外。

1 个答案:

答案 0 :(得分:1)

看起来@post为零,因此[@post, @comment]实际上被评估为[nil, @comment],它正在尝试映射到comments_path路由。

确保在控制器中指定@post@post = Post.find(...)