簡體   English   中英

Rails 4路由 - 沒有路由匹配

[英]Rails 4 routing - No route matches

我在Rails 4(生銹的Rails用戶)中遇到了一些路由問題。 我的Session控制器有以下路由:

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"

我的session #create action看起來像這樣:

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"

在這種情況下我的路線怎么樣?

我一般都有

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

之后,只需在需要的地方使用正確的URL

= form_tag login_path
  ...

這應該夠了吧

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM