2013-04-20 5 views
2

Я использую разработать и я хочу, чтобы настроить его URLs:Невозможно переписана разработать маршруты

users/sign_in --> account/login 
users/sign_up --> account/register 
users/edit --> account/profile 
... 

Теперь мой routes.rb выглядит следующим образом:

devise_scope :user do 
    get '/account/login' => 'devise/sessions#new' 
    post 'account/login' => 'devise/sessions#create', as: :user_session 
    delete 'account/logout' => 'devise/sessions#destroy', as: :destroy_user_session 

    post 'account/password' => 'devise/passwords#update', as: :user_password 
    get 'account/password/forgot' => 'devise/passwords#new', as: :new_user_password 
    get 'account/password/edit' => 'devise/passwords#edit', as: :edit_user_password 
    put 'account/password' => 'devise/passwords#update' 

    get 'account/cancel' => 'devise/registrations#cancel', as: :cancel_user_registration 
    post 'account' => 'devise/registrations#create', as: :user_registration 
    get 'account/register' => 'devise/registrations#new', as: :new_user_registration 
    get 'account' => 'devise/registrations#edit', as: :edit_user_registration 
    put 'account' => 'devise/registrations#edit' 
    delete 'account' => 'devise/registrations#destroy' 
    end 
    devise_for :users 

мне удается переписана profile, forgot, register ошибка не login:

Поэтому, когда я нажимаю на ссылку «Зарегистрироваться» ссылка в общем объявлении Devise форма Я перенаправлен на /register в браузере, но когда я нажимаю «Войти» link Я по-прежнему перенаправляется на /users/sign_in, а не login.

Я пробовал match против post + get для маршрутов, но без везения. Я знаю, что если я сам сгенерирую формы, я могу решить, как выглядят ссылки, но я бы предпочел пользователям общие формы разработки, а также мне любопытно, почему работают другие маршруты.

rake routes Запуск производит это (с верхними пятью рядами из моих маршрутов):

 new_user_session GET /account/login(.:format)   devise/sessions#new 
      user_session POST /account/login(.:format)   devise/sessions#create 
    destroy_user_session DELETE /account/logout(.:format)   devise/sessions#destroy 
      user_password POST /account/password(.:format)  devise/passwords#update 
     new_user_password GET /account/password/forgot(.:format) devise/passwords#new 
     edit_user_password GET /account/password/edit(.:format) devise/passwords#edit 
     account_password PUT /account/password(.:format)  devise/passwords#update 
cancel_user_registration GET /account/cancel(.:format)   devise/registrations#cancel 
     user_registration POST /account(.:format)     devise/registrations#create 
    new_user_registration GET /account/register(.:format)  devise/registrations#new 
    edit_user_registration GET /account(.:format)     devise/registrations#edit 
       account PUT /account(.:format)     devise/registrations#edit 
         DELETE /account(.:format)     devise/registrations#destroy 
     new_user_session GET /users/sign_in(.:format)   devise/sessions#new 
         POST /users/sign_in(.:format)   devise/sessions#create 
    destroy_user_session DELETE /users/sign_out(.:format)   devise/sessions#destroy 
         POST /users/password(.:format)   devise/passwords#create 
         GET /users/password/new(.:format)  devise/passwords#new 
         GET /users/password/edit(.:format)  devise/passwords#edit 
         PUT /users/password(.:format)   devise/passwords#update 
         GET /users/cancel(.:format)   devise/registrations#cancel 
         POST /users(.:format)     devise/registrations#create 
         GET /users/sign_up(.:format)   devise/registrations#new 
         GET /users/edit(.:format)    devise/registrations#edit 
         PUT /users(.:format)     devise/registrations#update 
         DELETE /users(.:format)     devise/registrations#destroy 
       root  /        posts#show 

Update: Я сейчас имитируя все маршруты DEViSE (СМ обновленный routes.rb). Но я до сих пор перенаправлены /users/sign_in

ответ

3

Вы можете попробовать это, Это работает

см получения дополнительной помощи devise wiki

devise_for :users, :path => '', :path_names => {:sign_in => 'login', :sign_out => 'logout'} 
+0

Хорошо, это намного лучше, чем пытаться переписать маршруты – Besi

2

Это должно работать. Также удалите/account и добавьте учетную запись пути в файл маршрутов, как я сделал ниже.

devise_scope :user, path: "account" do 
    get "login", :to => "devise/sessions#new", :as => "login" 
    get "signup" => "users/registrations#new", :as => "register" 
    get "edit" => "edit_user_registration", :as => "edit" 
    end 
Смежные вопросы