2010-08-22 47 views
1

我有我在其他控制器(帖子和标签)中使用的评论表单(在评论/ _form.html.erb中)。帮助将嵌套路线转换为Rails 3

<% form_for([@post, Comment.new], :html => { :multipart => true }) do |f| %> 

    <%= f.text_field :commenter %> 

    <%= f.text_field :email %> 

    <%= f.text_area :body %> 

    <%= f.submit 'submit' %> 

<% end %> 

在我的评论模式我有:

belongs_to :post 

在轨道2版我的申请,我routes.rb包括map.resources :posts, :has_many => :comments它工作得很好,但在Rails 3的相同配置会抛出一个未定义的方法错误:

undefined method `post_comments_path' for #<#<Class:0xf94920>:0xf8d540> 

我以为Rails 2.x路线只是折旧,直到3.1出来。我如何将其转换为Rails 3?感谢您阅读我的问题。

回答

4

在Rails 3,您可以定义嵌套的路线这样:

resources :posts do 
    resources :comments 
end 

我想你也可能需要定义的form_for有点不同:

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

希望帮助!查看http://rizwanreza.com/2009/12/20/revamped-routes-in-rails-3了解关于Rails 3中路由的更多信息。