Перенаправить пользователей # изменить в / настройки?
Я хочу, чтобы действие #edit пользователей всегда отображалось как /settings
,
В моих маршрутах у меня есть
get "settings" => "users#edit", as: :settings
Любая ссылка на настройки такая
<%= link_to "Settings", settings_path %>
Но когда я посещаю example.com/username/edit
не перенаправляет
Как я могу перенаправить это на settings
? И это плохая практика?
2 ответа
Определяя новый маршрут settings
вы говорите Rails направить все запросы GET, которые приходят к /settings
к users_controller
"s edit
метод. Это не означает, что все запросы, использующие этот контроллер, должны перенаправляться на другой маршрут - здесь вы только что определили два отдельных маршрута, которые используют один и тот же метод контроллера.
Если вы не хотите использовать user/edit
когда-нибудь, тогда я предлагаю вам удалить маршрут. Если у вас есть что-то вроде
# config/routes.rb
resources :users
Просто измените его на
# config/routes.rb
resources :users, except: [:edit]
И продолжайте использовать свой settings_path
помощник.
Я думаю, что вы хотели сделать это вместо
get '/ username / edit', to: redirect('/settings')
тот, который вы сделали выше, пытается заставить этот URL использовать метод, называемый edit
в users_controller
с псевдонимом settings
использоваться как settings_path
в вашей ссылке где-то
Для таких вопросов всегда полезно взглянуть на Rails API.