1

他のコントローラー(投稿とタグ)で使用するコメントフォーム(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

私のアプリケーションのRails2バージョンでは、routes.rb正常map.resources :posts, :has_many => :commentsに機能しましたが、Rails 3の同じ構成では、未定義のメソッドエラーがスローされます。

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

Rails 2.xのルートは、3.1が出るまで減価償却されたと思いました。これをRails3に変換するにはどうすればよいですか?私の質問を読んでくれてありがとう。

4

1 に答える 1

4

Rails 3 では、ネストされたルートを次のように定義できます。

resources :posts do
  resources :comments
end

form_for を少し異なる方法で定義する必要があるかもしれません:

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

それが役立つことを願っています! Rails 3 でのルーティングの詳細については、http://rizwanreza.com/2009/12/20/revamped-routes-in-rails-3を参照してください。

于 2010-08-22T22:35:41.980 に答える