0

我有一个 Rails 博客,其中所有帖子都嵌套在类别下,现在我添加评论嵌套在帖子下,但表单抛出undefined method `post_comments_path'错误。

我想我需要使@posts 类似于@categories.post 但我不确定。

路线

resources :categories do
  resources :posts, path: 'article' do
    resources :comments, :only => [:create]
  end
end

控制器

def create
    @post = Post.find(params[:post_id])
    @comment = @posts.comments.create!(params[:comment])
    redirect_to @post
end

看法

<%= simple_form_for [@post, Comment.new ], :remote => true do |f| %>
  <%= f.input :name %>
  <%= f.input :email %>
  <%= f.input :comment %>
  <%= f.button :submit %>
<% end %>
4

1 回答 1

1

我认为您忘记了类别。您需要提供一个类别:

控制器

def new
  ...
  @category = Category.find(params[:category_id])
  ...
end

def create
    @post = Post.find(params[:post_id])
    @comment = @posts.comments.create!(params[:comment])
    redirect_to @post
end

看法

<%= simple_form_for [@category, @post, Comment.new ], :url => category_post_comments_path, :remote => true do |f| %>
  <%= f.input :name %>
  <%= f.input :email %>
  <%= f.input :comment %>
  <%= f.button :submit %>
<% end %>

或从路线中删除类别,如下所示:

路线

resources :posts, path: 'article' do
  resources :comments, :only => [:create]
end
于 2013-09-10T08:19:55.153 回答