Перенаправить пользователей # изменить в / настройки?

Я хочу, чтобы действие #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.

Ссылка: http://guides.rubyonrails.org/routing.html

Другие вопросы по тегам