0

リンク先の別のモデルにパラメーターを渡すモデルの Rails の「新しい」ルートを定義するのに問題があります。従来の URL 構造が整っているため、残念ながら、ネストされたresourceルートはここでは機能しません。

/reviews/new/1234「新しいレビューを作成する」URL を として定義したいと1234思いbook_idますReview

私のルート(簡潔にするために省略)は次のように定義されています:

get    '/reviews/:book_id'          => 'reviews#index',   :as => 'reviews_path'
get    '/reviews/new/:book_id', :to => 'reviews#new',     :as => 'new_review_path'
post   '/reviews/:book_id'          => 'reviews#create'
get    '/reviews/:book_id/:id'      => 'reviews#show'
get    '/reviews/:book_id/:id/edit' => 'reviews#edit',    :as => 'edit_review_path'
delete '/reviews/:book_id/:id'      => 'reviews#destroy'

rake routes | grep review戻り値:

      reviews_path GET    /reviews/:book_id(.:format)                                              reviews#index
   new_review_path GET    /reviews/new/:book_id(.:format)                                          reviews#new
                   POST   /reviews/:book_id(.:format)                                              reviews#create
                   GET    /reviews/:book_id/:id(.:format)                                          reviews#show
  edit_review_path GET    /reviews/:book_id/:id/edit(.:format)                                     reviews#edit
                   DELETE /reviews/:book_id/:id(.:format)                                      reviews#destroy

私のビューテンプレートには次のものがあります:

<%= link_to 'new review', new_review_path(book_id: @book.id) %>

これは次のように失敗します:

ActionView::Template::Error (undefined method `new_review_path' for #<#<Class:0x007f818f7117c8>:0x007f818f70e208>):

完全を期すために、私のReviewモデルは次のようになります。

class Review < ActiveRecord::Base    
  attr_accessible :book_id, :title, :content, :tags
  belongs_to :book
end
4

1 に答える 1

1

_pathルートの条件の末尾から を削除:asします。現在、 を探していnew_review_path_pathます。

as を使用するためのドキュメントはこちらです

于 2013-11-06T22:27:26.897 に答える