*_path
メソッドでカスタムルートが認識されるようにする方法はありますか? http://www.example.com/nieuws/category/1/slug
を要求するときにこれが正常に動作しており、Rails 3のカスタムルートが* _pathメソッドで認識されない
resources :news, :only => [:index, :show], :path => :nieuws
match '/nieuws/:cat/:id/:slug', :to => 'news#show'
match '/nieuws/:id/:slug', :to => 'news#show'
それが正しいニュース項目が表示されます:
私は、リソース、および同じコントローラへのカスタムルートを持っています。問題は、news_path
メソッドを使用してニュースアイテムにリンクしたいということです。これを実現するために、私は私のニュース項目モデルに次のコードを追加しました:
def to_param
if news_category
"#{news_category.slug}/#{id}/#{slug}"
else
"#{id}/#{slug}"
end
end
猫、IDを区切ると、それが正常に動作しますスラグ/
を使用しますが、/
を使用している場合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"}
私はすでにを追加しようとしました私のリソースルートの最後まで、これは/
の使用を可能にしますが、それはちょうど私がURLだから、
から:cat
パラメータを取得できませんよ正規表現を使用しているため、必ず私のカスタムルートを作成する方法がありますnews_path
メソッドで認識されていますか?
おかげで、しかし、あなたが私に与えた解決策は、この「www.example.com/nieuws/2?cat = category&slug = slug'」のようなリンクを生成します。私が達成しようとしているのは、カテゴリーのないアイテムの場合、 'www.example.com/nieuws/category/2/slug'や' www.example.com/nieuws/2/slug'です。 'news_path'を使ってこれを行う別の方法がありますか、私のモデルに自分のURL /パスメソッドを作成する唯一の解決策ですか? – christiaanderidder
':as'オプションで名前付きルートを作成し、' news_path'メソッドの代わりにそれらを使うことができます。 – phoet
返信いただきありがとうございます! – christiaanderidder