Удалить модель из URL для разработчиков - PullRequest
2 голосов
/ 06 июля 2010

Как удалить название модели из URL-адреса Devise?

Т.е.

users/sign_in -> /sign_in
users/sign_out -> /sign_out
users/registration/sign_up -> /sign_up
users/registration/edit -> /edit

Ответы [ 2 ]

3 голосов
/ 15 апреля 2011

Это описано в README устройства (https://github.com/plataformatec/devise):

. Устройство также поставляется с маршрутами по умолчанию. Если вам нужно настроить их, вы, вероятно, сможете сделать это с помощью метода devise_for. Он принимает несколькотакие параметры, как: class_name,: path_prefix и т. д., включая возможность изменения имен путей для I18n:

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

Обязательно ознакомьтесь с документацией devise_for для получения подробной информации.

Если вам нужна более глубокая настройка, например, чтобы также разрешить "/ sign_in" помимо "/ users / sign_in", все, что вам нужно сделать, это нормально создать ваши маршруты и обернуть их в блок devise_scope в маршрутизаторе:

  devise_scope :user do
     get "sign_in", :to => "devise/sessions#new"
  end

Таким образом, вы указываете devise использовать область: user при обращении к "/ sign_in". Обратите внимание, что devise_scope также имеет псевдоним as, и вы также можете передать блок devise_for, что приводит к тому же поведению:

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

Не стесняйтесь выбирать тот, который вы предпочитаете!

(Возможно, этого не было в README когда этот вопрос был задан изначально.)

1 голос
/ 06 июля 2010

Способ сделать это вручную - это Rails 3:

match 'sign_in' => 'devise/sessions#new', :as => :sign_in
match 'sign_out' => 'devise/sessions#destroy', :as => :sign_out
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...