Реализация: кроме маршрутов для devise_for - PullRequest
0 голосов
/ 07 января 2012

Используя devise для user_auth, он устанавливает маршруты по умолчанию (например, / user / edit и / user / sign_in).В Routes.rb у меня есть

devise_scope :user do
  get 'signin' => 'devise/sessions#new'
  etc.
end

Проблема в том, что и / signin, и / user / sign_in работают для ссылки на страницу входа.Я хочу узнать, как сделать ссылку / user / sign_in неактивной, что означает, что при переходе на эту страницу выдается ошибка 404.

Мои рейк-маршруты:

    new_user_session GET    /users/sign_in(.:format)            {:action=>"new", :controller=>"devise/sessions"}
        user_session POST   /users/sign_in(.:format)            {:action=>"create", :controller=>"devise/sessions"}
destroy_user_session DELETE /users/sign_out(.:format)           {:action=>"destroy", :controller=>"devise/sessions"}
       user_password POST   /users/password(.:format)           {:action=>"create", :controller=>"devise/passwords"}
   new_user_password GET    /users/password/new(.:format)       {:action=>"new", :controller=>"devise/passwords"}
  edit_user_password GET    /users/password/edit(.:format)      {:action=>"edit", :controller=>"devise/passwords"}
                     PUT    /users/password(.:format)           {:action=>"update", :controller=>"devise/passwords"}
cancel_user_registration GET    /users/cancel(.:format)             {:action=>"cancel", :controller=>"registrations"}
   user_registration POST   /users(.:format)                    {:action=>"create", :controller=>"registrations"}
new_user_registration GET    /users/sign_up(.:format)            {:action=>"new", :controller=>"registrations"}
edit_user_registration GET    /users/edit(.:format)               {:action=>"edit", :controller=>"registrations"}
                     PUT    /users(.:format)                    {:action=>"update", :controller=>"registrations"}
                     DELETE /users(.:format)                    {:action=>"destroy", :controller=>"registrations"}
              signin GET    /signin(.:format)                   {:action=>"new", :controller=>"devise/sessions"}
             signout GET    /signout(.:format)                  {:action=>"destroy", :controller=>"devise/sessions"}
              signup GET    /signup(.:format)                   {:action=>"new", :controller=>"devise/registrations"}
             command GET    /command(.:format)                  {:action=>"edit", :controller=>"devise/registrations"}

1 Ответ

1 голос
/ 07 января 2012

Используйте devise_for , чтобы изменить путь и имена URL-адресов по умолчанию

devise_for :users, :path => '', :path_names => { :sign_in => 'signin', :sign_out => 'signout', :sign_up => 'signup' }

Я бы порекомендовал оставить имена путей как sign_in, sign_out и sign_up, поскольку вход выглядит как бред.

Кроме того, выборочное редактирование этих значений по умолчанию, вероятно, просто сделает ваши маршруты более запутанными в долгосрочной перспективе. Поэтому, если нет веских причин перезаписывать значения по умолчанию, вам следует придерживаться того, что рекомендует devise.

...