我有一个评论表单(在comments / _form.html.erb中),我在其他控制器(帖子和标签)中使用。
<% 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
在我的应用程序的rails 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?感谢您阅读我的问题。
答案 0 :(得分:4)
在Rails 3中,您可以定义嵌套路由:
resources :posts do
resources :comments
end
我认为你可能还需要以不同的方式定义form_:
<%= form_for [:post, @comment] do |f| %>
希望有所帮助!查看http://rizwanreza.com/2009/12/20/revamped-routes-in-rails-3以获取有关Rails 3中路由的更多信息。