Как настроить маршрут регистрации пользователя с помощью devise gem для Rails?

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

devise_for :users,  :controllers => { :registrations => "users/registrations" } do
    post "/", :to => "users/registrations#create_from_admin"
  end

В результате:

[bbrasky@admins-MacBook-Pro-2:~/Projects/my_app(master)]$ rake routes
POST   /users(.:format) {:controller=>"users/registrations", :action=>"create"}

Кто-нибудь знает как это сделать?

Спасибо!


person Bill Brasky    schedule 30.08.2010    source источник


Ответы (2)


Вот что я смог сделать с маршрутами Devise, чтобы настроить их все

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

match "login" => "devise/sessions#new", :as => :new_user_session 
match "logout" => "devise/sessions#destroy", :as => :destroy_user_session
match "register" => "devise/registrations#new", :as => :new_user_registration

Если вы запустите рейк-маршруты, вы увидите остальные, которые вы можете изменить, но это начало списка, и все они работают правильно :) Получайте удовольствие!

person bokor    schedule 16.11.2010

Попробовал описанный выше подход с последней версией rails 4 и devise, у меня он не сработал, но нашел решение в документации здесь с настройкой маршрутов. Аналогичный подход, но с использованием devise_scope в файле маршрутов вместо match. Надеюсь, это поможет кому-то еще.

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

 devise_scope :user do
  get "login", to: "devise/sessions#new"
  get "logout", to: "devise/sessions#destroy"
  get "register", to: "devise/registrations#new"
 end
person roborew    schedule 29.04.2014