2015-07-31 2 views
2

Позвольте мне вкратце объяснить, как я хотел бы, чтобы маршруты работали, а затем покажу вам код, с которым я работаю. Я хотел бы следующее случилось:Контейнеры маршрутизации Rails с вложенным маршрутом

hearing-providers/any-text-but-a-state-abbreviation -> dispensers controller 

hearing-providers/TX -> regions#show 

hearing-providers/TX/dallas -> cities#show 

Вот код, который я пытаюсь:

resources "hearing-providers", controller: 'dispensers', as: 'dispensers' do 
    constraints(region_id: /A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY]/) do 
     collection do 
     get ':state_abbreviation' => 'regions#show', :as => :region 
     get ':state_abbreviation/:city_name' => 'cities#show', :as => :city 
     end 
    end 
    end 

Проблема заключается в следующем:

Это не имеет значения, какой путь , Я всегда направляюсь к контроллеру регионов. Настройка ограничений не работает.

+1

Вы устали от использования 'state_abbreviation' внутри вашего ограничения вместо' region_id'? – BroiSatse

+0

А, да, это работает, СПАСИБО! Хотите опубликовать его как ответ? – Abram

ответ

2

Вы определили ограничение для region_id, но вы не используете его в своих маршрутах. Измените свое ограничение на:

constraints(state_abbreviation: /A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY]/) do 

и все должно работать.

+0

Еще раз спасибо. Глупая ошибка, но ваш ответ помог! – Abram

Смежные вопросы