Почему имя параметра отличается от этих двух маршрутов? - PullRequest
0 голосов
/ 10 февраля 2019

У меня есть два маршрута, которые я хочу указать на одно и то же действие контроллера.

get '/events/:url_token' , to: 'events#show'

get '/tv/events/:url_token', to: 'events#show'

и в моем EventsContoller для действия show я установил событие с помощью

@event = Event.find_by(url_token: params['id'])

Thisотлично работает, когда я перехожу к / events / asdf, потому что параметры выглядят как

{"id" => "asdf"}

, но когда я перехожу к /tv / events / asdf Я получаю

{"url_token" => "hbbnHw"}

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

РЕДАКТИРОВАТЬ: я также получил это в моих маршрутах, связанных с событиями:

resources :events do
  member do
    post :addeventgroup
    patch :updateeventtype
    patch :updateeventgroup
    patch :start_event
  end

1 Ответ

0 голосов
/ 10 февраля 2019

resources :events добавляет несколько маршрутов в ваше приложение - один из них похож на следующий шаблон:

get '/events/:id', to: 'events#show'

Если вы не хотите использовать этот маршрут и вместо этого хотите использовать тот, который вы определили с помощью

get '/events/:url_token' , to: 'events#show'

тогда вы можете отключить маршрут, сгенерированный resources :events следующим образом:

resources(:events, except: :show) do
  member do
    # ...
  end  
end

Я предлагаю прочитать Руководство по Rails по маршрутизации .

В качестве альтернативы вы можете просто удалить это определение get '/events/:url_token', to: 'events#show' и переименовать параметр в другом, например:

get '/tv/events/:id', to: 'events#show'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...