Как удалить имя ресурса из помощника маршрута? - PullRequest
1 голос
/ 13 марта 2019

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

resources :promo_pages, path: 'promo' do
    get :promo_rubizza, on: :collection, path: 'rubizza', as: :rubizza
end

Этот маршрут создан - rubizza_promo_pages_path

Но я бы хотел - rubizza_path.

Как это реализовать?
Я хотел реализовать это как resources :promo_pages, path: 'promo', as: '', но он создал rubizza__index_path

UPD: вывод rails routes

rubizza_promo_pages GET    /promo/rubizza(.:format)       promo_pages#promo_rubizza

Ответы [ 3 ]

1 голос
/ 13 марта 2019

В маршрутах, пожалуйста, определите следующий маршрут (поместите его на тот же уровень, что и resources, без вложенности):

get 'promo/rubizza', to: 'promo_pages#promo_rubizza', as: 'rubizza'

Тогда вы сможете использовать rubizza_path и rubizza_url.

0 голосов
/ 13 марта 2019

Настройки деталей названий маршрутов доступны здесь .

Как насчет определения пути на основе контроллера и действия?

 get 'promo_pages/promo_rubizza', to: 'promo_pages#promo_rubizza', as: :rubizza

вернется:

 Prefix Verb URI Pattern                          Controller#Action
rubizza GET  /promo_pages/promo_rubizza(.:format) promo_pages#promo_rubizza
0 голосов
/ 13 марта 2019

что вы можете сделать, это определить этот путь в вашем application controller:

class ApplicationController < ActionController::Base
  ...
  def rubizza_path
    rubizza_promo_pages_path
  end

  helper_method :rubizza_path
end

в вашем routes.rb:

resources :promo_pages, path: 'promo' do
   get :promo_rubizza, on: :collection, path: 'rubizza', as: :rubizza
end

Таким образом, вы по-прежнему можете использовать rubizza_path в своих представлениях, помощниках, контроллерах и т. Д., Но вместо этого он использует полный вложенный маршрут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...