2010-09-22 137 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 =>「銷燬」,:控制器=>「會話」}