Как мне привязать Rails по умолчанию root к странице входа в систему, используя devise? - PullRequest
1 голос
/ 06 апреля 2011

По умолчанию корневой страницей моего приложения должна быть страница входа.

Если я сделаю это (как предложено в этот вопрос ):

root :to => "devise/sessions#new

Я получу:

Started GET "/" for 127.0.0.1 at 2011-04-06 10:36:38 +0200
Processing by Devise::SessionsController#new as HTML
Completed   in 0ms

AbstractController::ActionNotFound (AbstractController::ActionNotFound):

Я также пыталсяпереписать Devise::SessionsController, чтобы он выглядел так:

class SessionsController < Devise::SessionsController
  def new
  end
end

В маршрутах у меня есть:

devise_for :users, :controllers => {:sessions => "sessions"}

РЕДАКТИРОВАТЬ rake routes показать:

 ...
 new_user_session     GET    /users/sign_in(.:format)    {:action=>"new", :controller=>"sessions"}
 user_session         POST   /users/sign_in(.:format)    {:action=>"create", :controller=>"sessions"}
 destroy_user_session GET    /users/sign_out(.:format)   {:action=>"destroy", :controller=>"sessions"}
 root                        /(.:format)                 {:controller=>"devise/sessions", :action=>"new"}
 ...

Использование устройства 1.1.7 с Rails 3.

1 Ответ

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

Вам нужно, чтобы страница входа использовалась по умолчанию, даже если пользователь уже вошел в систему?

Если это не так, вы можете просто указать на какой-нибудь контроллер.

В ваших маршрутах:

map.root :controller => :your_controller

А затем потребуйте, чтобы пользователь прошел аутентификацию: В вашем контроллере:

before_filter :authenticate_user!

Это перенаправит пользователя в форму входа, кроме случаев, когда он / она уже вошел в систему.

...