2015-08-06 7 views
0

у меня есть две строк в моем routes.rb, которые выглядят так:Обеспечения большей специфичности для маршрутизации ресурсов

resources :locations 
    get '/locations/:session_series_token/new', to: 'locations#new', as: "new_location" 

хочет метод create в моем LocationsController, и я также хочу конкретный locations#new пути.

Удаление resources :locations линии вызывает мою #new форму ошибки с:

undefined method `locations_path' for #<<Class:0x007fa18caeb3b8>:0x007fa18caea8f0> 
Extracted source (around line #1): 

    <%= form_for [@location] do |form| %> 
    <h2>Class Location</h2> 

Там должен быть способ сделать это правильно!

ответ

0

Я думаю, что, поскольку вы удаляете resources: locations, больше нет «указательного» маршрута для местоположения (так называемый location_path). Запустите команду rake routes, и вы увидите, что у вас остался только путь new_location_path.

Попробуйте указать путь, как так:

<%= form_for @location, url: new_location_path do |form| %> 
0

Попробуйте это:

resources :locations, except: [:new] 
get '/locations/:session_series_token/new', to: 'locations#new', as: "new_location" 

Как resources :locations определяет все маршруты для вас, и вам нужно определить только new маршрут явно, так что вы можете напишите, как указано выше. Если вы удалите resources :locations, то ваш маршрут create также будет удален, а линия <%= form_for [@location] do |form| %> будет искать locations_path, что является действием create.

Надеюсь, это поможет.