1

*_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メソッドで認識されていますか?

答えて

0

私はあなたがto_paramを使用していると思われる方法で使用していると思います。 to_paramメソッドを使用している場合は、ファインダとしてfrom_paramメソッドが存在し、常にパスではなくトークンにマップする必要があります。つまり、"#{news_category.slug}/#{id}/#{slug}"ではなく"#{news_category.slug}-#{id}-#{slug}"となります。

あなたはこのようなあなたのnews_path呼び出しにそれを配置する必要があり、パスセグメントによって分離することwan't場合:

news_path(news, :cat => news_category.slug, :slug => slug) 

は、より多くの助言のためのガイドを参照してください。答えをhttp://guides.rubyonrails.org/routing.html#segment-constraints

+0

おかげで、しかし、あなたが私に与えた解決策は、この「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

+0

':as'オプションで名前付きルートを作成し、' news_path'メソッドの代わりにそれらを使うことができます。 – phoet

+0

返信いただきありがとうございます! – christiaanderidder

関連する問題