пространства имен и рельсы - PullRequest
1 голос
/ 23 июня 2011

У меня есть такой маршрут:

  namespace :folio do
    resources :portfolios do
      resources :portfolio_items do
        resources :images
      end
    end
  end

Теперь, пожалуйста, не подгоняйте меня из-за глубокой укладки.Это постоянный древовидный объект типа mongo db, и все уровни сохраняются в корневом объекте.

Меня удивляет тот факт, что сгенерированные маршруты читают что-то вроде

folio_portfolio_portfolio_item

Но когдаЯ спрашиваю URL-адрес от urlhelper

url_for [@portfolio, @portfolio_item]

Я получаю приятное исключение, сообщающее мне

undefined method `hash_for_folio_portfolio_folio_portfolio_item_path' for #<Module:0x0000000492fc30>

Видите второе "фолио" там?Есть идеи, как мне от этого избавиться?Обеспечение: url =>, к сожалению, не вариант, потому что это бы дублировало мои представления формы, а до этого я бы вообще отказался от пространства имен.Но нехотя так: это рельсовый двигатель, и я бы хотел избежать столкновений.

Итак, другими словами ...

Я хочу

= form_for [@portfolio, @portfolio_item] do |form|

to "просто работай :).Это слишком много, чтобы спросить?

Наблюдение такая маршрутизация выводит меня немного вперед:

resources :folio_portfolio_items, :controller=>Folio::PortfolioItemsController do

, хотя, черт возьми, ужасен, он генерирует хорошие URL.Проблема в том, что, когда я хочу посетить одного из них, я получаю

ActionController::RoutingError (uninitialized constant Folio::Folio):

Что бы это ни значило ...

Как член команды, я думаю, что это очень странно, что это вообще происходит.Я думаю, что мои контроллеры для сопоставления доменов ожидаемые ...

Я создал пример приложения, которое иллюстрирует это на https://github.com/janlimpens/testroutes

...