2013-06-26 295 views
0

我有一些路徑在Rails 4(生鏽的Rails用戶)的麻煩。我有我的會話控制器以下路線:Rails 4路由 - 沒有路由匹配

controller :sessions do 
    get 'login' => :new 
    post 'login' => :create 
    delete 'logout' => :destroy 
end 

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

而且我有一個看起來像這樣的形式:

= form_tag do 
    .form_container 
    .field 
     = label_tag :name, "Namn:" 
     = text_field_tag :name, params[:name] 
    .field 
     = label_tag :password, "Lösenord:" 
     = password_field_tag :password, params[:password] 
    .actions 
     = submit_tag 'Login', :class => "submit_button" 

我的會話#創建操作是這樣的:

def create 
    user = User.find_by(name: params[:name]) 
    if user and user.authenticate(params[:password]) 
    session[:user_id] = user.id 
    redirect_to root_path 
    else 
    redirect_to login_url, alert: "Invalid user/password combination" 
    end 
end 

我得到以下錯誤:

No route matches [POST] "/login/create" 

我的路線在這種情況下應該如何看待?

回答

2

我一般都具有

resource :session 
post 'login' => 'sessions#create' 
get 'login' => 'sessions#new' 

創建

 session POST /session(.:format)        sessions#create 
new_session GET /session/new(.:format)       sessions#new 
edit_session GET /session/edit(.:format)      sessions#edit 
      GET /session(.:format)        sessions#show 
      PUT /session(.:format)        sessions#update 
      DELETE /session(.:format)        sessions#destroy 
     login POST /login(.:format)        sessions#create 
      GET /login(.:format)        sessions#new 

而在這之後僅僅用在需要的地方

= form_tag login_path 
    ... 

正確的網址應該做的伎倆

相關問題