0

所以当我尝试访问时http://127.0.0.1:3000/users/1/posts/17出现错误

undefined method `post_comments_path' for #<#<Class:0x007fece23212a8>:0x007fece2a7c110>

Extracted source (around line #1):

1: <%= form_for([@post, @comment]) do |f| %>
2: 
3:  <%= f.label :name %>
4:

这是引用我的文件 -/app/views/posts/_form_comment.html.erb where line #1 raised:

我的/app/views/posts/_form_comment.html.erb文件如下 -

<%= form_for([@post, @comment]) do |f| %>

    <%= f.label :name %>
    <br />
    <%= f.text_field :name%>
    <br />
    <%= f.label :comment %>
    <br />
    <%= f.text_area :comment%>
    <br />

<%= f.submit "Create comment" %>

<% end %>

这是我的 PostController 中的 show 方法

def show
    @post = Post.find(params[:id])
    @comment = @post.comments.build
    @cl = Comment.where(:post_id => @comment[:post_id])

  end

现在请注意,如果清空文件的内容/app/views/posts/_form_comment.html.erb,页面加载就好了。显示帖子标题和内容。除了评论区。所以,我猜评论部分有问题。但我不知道是什么。

重要提示:这以前没有发生过。在我将用户模型与帖子模型相关联之前,它工作正常。 非常感谢。

更新:我的路线看起来像 -

  resources :users, only: [:show] do 
    resources :posts do
    end
    resources :comments, only: [:create]
  end
4

1 回答 1

1

你应该有类似的东西

resources :posts do
  resources :comments
end

在您的路线中。这是url_for成功创建路线所需的[@post, @comment]

更新:包括帖子和用户的嵌套资源

以下完全没问题

resources :posts do
  resources :comments
end

resources :users do
  resources :posts
end
于 2013-03-01T15:58:14.563 回答