登录尝试失败时/ session而不是/ login

时间:2010-09-22 18:07:46

标签: ruby-on-rails-3 rails-routing

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之后保留/ login url:action => “新”??? 感谢。

2 个答案:

答案 0 :(得分:1)

redirect_to '/login'不保留render 'new'之类的帖子信息。

我对这个解决方案并不完全满意,但这就是我所做的:

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

它为您提供以下路线:

  • session POST /session(。:format){:action =>“create”,:controller =>“sessions”}
  • new_session GET /session/login(.:format){:action =>“new”,:controller =>“sessions”}
  • DELETE /session(.:format) {:action =>“destroy”,:controller =>“sessions”}

答案 1 :(得分:0)

简单的解决方案是将render :action => 'new'更改为redirect_to '/login'。我并不是非常喜欢这个,但它应该为你解决问题。