Как связать вызовы devise_for в моем файле маршрута?- Рельсы 3.1 - PullRequest
1 голос
/ 28 сентября 2011

Я пытаюсь использовать OmniAuth, и, согласно Райану Бейтсу, я должен переопределить контроллер регистрации Devise, указав следующую область devise_for в моем файле routes.rb:

devise_for :users, :controllers => {:registrations => 'registrations'}

Однако, согласнок Devise's документации, если я хочу настроить path_names, поэтому вместо того, чтобы делать mydomain.com/users/sign_up/, я могу сделать mydomain.com/register, мне придется сделать что-то вроде этого:

devise_for :users, :path_names => { :sign_up => "register", :sign_in => "login", :sign_out => "logout", :settings => "settings", :newpass => "newpass", :changepass => "changepass" }

Я пыталсяцепочка их обоих так:

devise_for :users, :controllers => {:registrations => 'registrations'}, :path_names => { :sign_up => "register", :sign_in => "login", :sign_out => "logout", :settings => "settings", :newpass => "newpass", :changepass => "changepass" }

Но это не сработает.Чтобы перейти к представлению в моем views/registrations/new.html.erb, мне нужно перейти к mydomain.com/users/register.Если я перейду к mydomain.com/register, он все равно подаст его с /views/devise/registrations/new.html.erb.

Как мне заставить mydomain.com/register указать на /views/registrations/new.html.erb?

Спасибо.

1 Ответ

7 голосов
/ 28 сентября 2011

Запишите это в свой маршрутный файл вместо добавления :path_name

devise_scope :user do
   get "register", :to => "devise/registrations#new"
   get "login", :to => "devise/sessions#new"
   get "logout", :to => "devise/sessions#destroy"
end

_edit2_ _

Если вы хотите переопределить контроллеры, то вам нужно скопировать папку devise controller из вашего гема в ваше приложение под app / controllers.В этом случае вам также необходимо записать строки ниже в файле rout.rb.Если вы не хотите переопределять функциональность по умолчанию для контроллеров devise, нет необходимости добавлять строки ниже в файле rout.rb.

devise_for :users, :controllers => {
      :registrations => 'devise/registrations',
      :sessions => 'devise/sessions',
      :passwords => 'devise/passwords',
      :confirmations => 'devise/confirmations',
      :unlocks => 'devise/unlocks'
  }
...