Рельсы двойных вложенных маршрутов, разбитые - PullRequest
0 голосов
/ 06 февраля 2011

У меня есть следующие маршруты:

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

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

Это только для того, чтобы URL-адрес не должен быть вложенным вдвойне, я хочу, чтобы URL-адрес был максимально двух объектов.

Проблема в том, что для событий я хочу требовать там / 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 *, я хочу, чтобы URL требовал указывать * category_id *, но если пользователь хочет увидеть событие, необходимо указать sub_category_id.

Ответы [ 2 ]

1 голос
/ 06 февраля 2011

Вы правы, он генерирует 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 делаетесть новая поддержка для мелких маршрутов, которые могут вас заинтересовать.Подумайте об обновлении!

0 голосов
/ 06 февраля 2011

Мне только удалось заставить это работать ... но я собираюсь оставить это здесь в надежде людей, голосующих за пользовательского помощника, как предложил @wuputah, или мой метод.

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

производит маршруты, которые я ищу ..

...