/ сеанс вместо / входа в систему при неудачной попытке входа - PullRequest
3 голосов
/ 22 сентября 2010
sessions_controller.rb

  def create
    if user = User.authenticate(params[:login], params[:password])
      session[:user_id] = user.id
      redirect_to posts_path
    else
      render :action => 'new'
    end
  end


routes.rb

  get "sessions/create"
  get "sessions/destroy"
  get "sessions/new"

  resources :posts
  resource  :session
  resources :users

  match '/login',  :to => 'sessions#new',     :as => 'login'
  match '/logout', :to => 'sessions#destroy', :as => 'logout'

Можно ли сохранить / логин URL после рендера: action => "new" ???спасибо.

Ответы [ 2 ]

1 голос
/ 10 февраля 2011

redirect_to '/login' не сохраняет почтовую информацию, как render 'new'.

Я не совсем доволен этим решением, но вот что я сделал:

resource :session, :only => [:create, :new, :destroy], 
         :path_names => { :new => 'login' }

, который дает вам следующие маршруты:

  • сеанс POST /session( .:format) {: action => "create",: controller => "session"}
  • new_session GET /session/login(.:format) {: action => "new",: controller => "session"}
  • DELETE /session(.:format) {: action => "destroy",: controller => "session"}
0 голосов
/ 23 сентября 2010

Простым решением было бы просто изменить render :action => 'new' на redirect_to '/login'.Мне это не очень нравится, но это должно решить эту проблему для вас.

...