2010-09-22 133 views
3
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' 

是否可以在render:action =>“new”之后保留/ login url? 谢谢。/会话,而不是登录尝试失败时登录

回答

0

简单的解决办法是简单地将render :action => 'new'更改为redirect_to '/login'。我不是很喜欢这个,但它应该为你解决问题。

1

redirect_to '/login'不保留帖子信息如render 'new'确实。

我不是这个解决方案完全满意,但是这是我做了什么:

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

它给你以下途径:

  • 会后/session(.:format ){:action =>“create”,:controller =>“sessions”}
  • new_session GET /session/login(.:format){:action =>“new”,:controller =>“sessions”}
  • DELETE /session(.:format){:ac =>“销毁”,:控制器=>“会话”}