0

私はこれらのルートを持っています:

  map.resources :categories do |category|
    category.resources :sub_categories
  end

  map.resources :sub_categories do |sub_category|
    sub_category.resources :events
  end

これは、URL を二重にネストする必要がないようにするためだけです。URL を最大 2 つのオブジェクトの深さに保ちたいと考えています。

問題は、イベントの場合、 /sub_categories/:sub_category_id を path_prefix として要求したいのですが

  map.resources :events, path_prefix => '/sub_categories/:sub_category_id'

次のようなルートを教えてくれます

  event_path

私が持ちたいのは

  sub_category_event_path

ユーザーが*sub_category*にアクセスしたいときはいつでも、*category_id*を提供する必要があるURLが必要ですが、ユーザーがイベントを見たい場合は、sub_category_idを提供する必要があります。

4

2 に答える 2

1

そうです、それは を生成しますが、それにはevent_pathオプションがevent_path必要です。ヘルパー:sub_category_idを取得するには、次のように記述します。sub_category_event_path

class ApplicationController < ActionController::Base
  private
  def sub_category_event_path(sub_category, event) 
    event_path(event, :sub_category_id => sub_category)
  end
  helper_method :sub_category_event_path
end

残念ながら、必要に応じてsub_category_event_url、それも作成する必要があります。

Rails 3 には、興味のある浅いルートの新しいサポートがいくつかあります。アップグレードを検討してください!

于 2011-02-06T04:57:36.893 に答える
0

私はなんとかこれを機能させることができました..しかし、@wuputahが提案したカスタムヘルパー、または私の方法に投票する人々を期待して、ここに残します。

map.resources :events, :path_prefix => 'sub_categories/:sub_category_id', :name_prefix => 'sub_category_'

私が探しているルートを生成します..

于 2011-02-06T05:07:02.340 に答える