Подтвердить что ты не робот

Как изменить логин и URL-адреса регистрации в разработке плагина Rails3

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

/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 => ''

Мне нужен какой-то метод маршрутизации, такой как route/users/sign_in и /users/sign _up to/login и /signup.

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

UPDATE: я изменил файл routes.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' в браузере

4b9b3361

Ответ 1

Вот несколько вариантов, чем вы просили, но ясно:

  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 not a home path
  end

  def after_update_path_for(resource)
    edit_user_registration_path
  end
end

У разработчика есть хороший wiki.

Ответ 2

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

  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

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

Ответ 3

Надеюсь, я не слишком поздно;)

вот как это работает (просто вставьте его в свои маршруты .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

Ответ 4

изменить config/routes.rb

devise_for: users, path: ''

 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

Ответ 5

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

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

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

Подробнее можно найти по адресу: http://guides.rubyonrails.org/routing.html