Как изменить логин и адрес регистрации в плагине devise Rails3 - PullRequest
19 голосов
/ 03 марта 2011

Я использую плагин устройства в моем новом приложении Rails 3.Моя проблема заключается в том, что у плагина devise есть корни по умолчанию для входа и регистрации

/users/sign_in
/users/sign_up

Мне нужно изменить это значение на

/login 
/signup

Для этого я использовал следующую маршрутизацию

 devise_for :users do
   get "login", :to => "devise/sessions#new"
   get "signup", :to => "devise/registrations#new"
 end

При этом мне нужно указывать 'login_path' и 'signup_path' везде, где в моих представлениях появляются new_user_session_path и new_user_registration_path

Мне нужна конфигурация в маршрутах, которая отображает '/ login' и '/ signup'на new_user_session_path и new_user_registration_path.

Я видел сообщение, в котором маршруты / users / sign_in и / users / sign_up к / sign_in и / sign_up с использованием показанной ниже маршрутизации.

  devise_for :user, :as => ''

мне нужнонекоторая техника маршрутизации, подобная этой, которая направляет / users / sign_in и / users / sign_up в / login и /signup.

Может кто-нибудь помочь мне с этим.

ОБНОВЛЕНИЕ: Я изменил свои маршруты.rb файл в

  devise_for :users,
         :controllers => { :sessions => 'devise/sessions'},
         :skip => [:sessions] do
       get '/login' => "devise/sessions#new", :as => :new_user_session
       post '/login' => 'devise/sessions#create', :as => :user_session
       get '/signout' => 'devise/sessions#destroy', :as => :destroy_user_session
       get '/signup' => 'devise/registrations#new', :as => :new_user_registration
  end

Но все же, когда я использую link_to 'new_user_registration' в моих представлениях, он не отображается как '/ signup' в браузере

Ответы [ 5 ]

32 голосов
/ 03 марта 2011

Здесь немного больше вариантов, чем вы просили, но это понятно:

  devise_for :users,
             :controllers => { :registrations => "users/registrations",
                               :confirmations => "users/confirmations",
                               :sessions => 'devise/sessions'},
             :skip => [:sessions] do
    get '/signin'   => "devise/sessions#new",       :as => :new_user_session
    post '/signin'  => 'devise/sessions#create',    :as => :user_session
    get '/signout'  => 'devise/sessions#destroy',   :as => :destroy_user_session
    get "/signup"   => "users/registrations#new",   :as => :new_user_registration
  end

Еще больше, с :registrations => "users/registrations" мы можем дополнительно настроить перенаправления:

class Users::RegistrationsController < Devise::RegistrationsController
  protected

  def after_sign_up_path_for(resource)
    welcome_path # it's not a home path
  end

  def after_update_path_for(resource)
    edit_user_registration_path
  end
end

У Devise естьхороший вики .

3 голосов
/ 03 марта 2011

Мне удалось исправить мою проблему, используя следующий код в моих маршрутах

  devise_for :users,
           :controllers => { :sessions => 'devise/sessions'},
           :skip => [:sessions] do
    get '/login'   => "devise/sessions#new",       :as => :new_user_session
    post '/login'  => 'devise/sessions#create',    :as => :user_session
    get '/signout'  => 'devise/sessions#destroy',   :as => :destroy_user_session
    get "/signup" => "devise/registrations#new", :as => :new_user_registration
  end

Но все еще в моих взглядах, если я использую

  link_to "Register", new_user_registration_path

В моем браузере он отображается как

  /user/sign_up   and not as /signup

Но если я непосредственно наберу / зарегистрируюсь, я получу страницу регистрации. Есть ли здесь какое-либо отображение, которое мне нужно сделать.

2 голосов
/ 19 апреля 2011

надеюсь, я еще не поздно;)

вот как это работает (просто вставьте его в ваши маршруты. Rb, и все готово):

  devise_for :users, :controllers => {:sessions => 'devise/sessions'}, :skip => [:sessions] do
    get 'login' => 'devise/sessions#new', :as => :new_user_session
    post 'login' => 'devise/sessions#create', :as => :user_session
    get 'logout' => 'devise/sessions#destroy', :as => :destroy_user_session
    get 'register' => 'devise/registrations#new', :as => :new_user_registration
  end
1 голос
/ 13 июля 2015

edit config / rout.rb

devise_for: пользователи, путь: ''

 devise_for :users, path: '', path_names: { sign_in: 'login', sign_out: 'logout', password: 'secret', confirmation: 'verification', unlock: 'unblock', registration: 'register', sign_up: 'cmon_let_me_in' }

     new_user_session GET    /login(.:format)                         devise/sessions#new
                user_session POST   /login(.:format)                         devise/sessions#create
        destroy_user_session DELETE /logout(.:format)                        devise/sessions#destroy
               user_password POST   /secret(.:format)                        devise/passwords#create
           new_user_password GET    /secret/new(.:format)                    devise/passwords#new
          edit_user_password GET    /secret/edit(.:format)                   devise/passwords#edit
                             PATCH  /secret(.:format)                        devise/passwords#update
                             PUT    /secret(.:format)                        devise/passwords#update
    cancel_user_registration GET    /register/cancel(.:format)               devise/registrations#cancel
           user_registration POST   /register(.:format)                      devise/registrations#create
       new_user_registration GET    /register/cmon_let_me_in(.:format)       devise/registrations#new
      edit_user_registration GET    /register/edit(.:format)                 devise/registrations#edit
                             PATCH  /register(.:format)                      devise/registrations#update
                             PUT    /register(.:format)                      devise/registrations#update
                             DELETE /register(.:format)                      devise/registrations#destroy
0 голосов
/ 03 марта 2011

Если я правильно читаю и понимаю ваш вопрос, вы после 'match'.

devise_for :users
match "/login" => "devise/sessions#new"
match "/signup" => "devise/registrations#new"

Убедитесь, что они в правильном порядке, поскольку они совпадают на основе номеров строк в файле.

Больше информации можно найти по адресу: http://guides.rubyonrails.org/routing.html

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