カスタムルートがメソッドによって認識されることを確認する方法はあり*_path
ますか?
リソースと、同じコントローラーへのカスタムルートがあります。
resources :news, :only => [:index, :show], :path => :nieuws
match '/nieuws/:cat/:id/:slug', :to => 'news#show'
match '/nieuws/:id/:slug', :to => 'news#show'
これは正常に機能しており、リクエストhttp://www.example.com/nieuws/category/1/slug
すると正しいニュースアイテムが表示されます。news_path
問題は、このメソッドを使用してニュースアイテムにリンクしたいということです。これを実現するために、ニュースアイテムモデルに次のコードを追加しました。
def to_param
if news_category
"#{news_category.slug}/#{id}/#{slug}"
else
"#{id}/#{slug}"
end
end
/
cat、id、slugを分離するために使用しない場合/
は正常に機能しますが、news_pathメソッドを使用する場合は失敗し、要求されたページが表示されます。
No route matches {:action=>"show", :controller=>"news", :id=>#<NewsItem id: 1...etc
私のrake routes
出力:
news_index GET /nieuws(.:format) {:action=>"index", :controller=>"news"}
news GET /nieuws/:id(.:format) {:action=>"show", :controller=>"news"}
/nieuws/:cat/:id/:slug(.:format) {:controller=>"news", :action=>"show"}
/nieuws/:id/:slug(.:format) {:controller=>"news", :action=>"show"}
, :id => /[0-9]+\/.+/
すでにリソースルートの最後に追加しようとしました。これにより、の使用が可能になりますが/
、正規表現を使用しているため:cat
、URLからパラメーターを取得できません。
それで、私のカスタムルートがメソッドによって認識されることを確認する方法はありnews_path
ますか?