2015-09-28 96 views
2

我在Rails中遇到了第一個應用程序的錯誤,希望有人能幫助並給我一些線索如何處理。沒有路線匹配[POST]「/ manager」

錯誤:

No route matches [POST] "/manager"

當我提交此表:

登錄

<div class="row"> 
    <div class="span6 offset3"> 
    <%= form_for(:session, url: manager_path) do |f| %> 

     <%= f.label :name %> 
     <%= f.text_field :name %> 

     <%= f.label :password %> 
     <%= f.password_field :password %> 

     <%= f.submit "Sign in", class: "btn btn-large btn-primary" %> 
    <% end %> 
    </div> 
</div> 

route.rb文件是:

Rails.application.routes.draw do 
     resources :users 
     resources :sessions, only: [:new, :create, :destroy] 
     root 'static_pages#home' 
     match '/manager', to: 'static_pages#manager', via: 'get' 
     match '/signin', to: 'sessions#new',   via: 'get' 
     match '/signout', to: 'sessions#destroy',  via: 'delete' 
end 

session_controller.rb是:

class SessionsController < ApplicationController 
    def new 
    end 

    def create 
    user = User.find_by(name: params[:session][:name]) 
    if user && user.authenticate(params[:session][:password]) 
     sign_in user 
     redirect_to user 
     # Sign the user in and redirect to the user's show page. 
    else 
     flash.now[:error] = 'Invalid email/password combination' 
     redirect 'new' 
    end 
    end 

    def destroy 
    end 
end 

的Ruby版本:2.1.5,Rails的v 4.2.4

感謝

回答

0
Rails.application.routes.draw do 
    resources :users 
    resources :sessions, only: [:new, :create, :destroy] 
    root 'static_pages#home' 
    match '/manager', to: 'static_pages#manager', via: 'get' 
    match '/manager', to: 'sessions#create',   via: 'post' 
    match '/signin', to: 'sessions#new',   via: 'get' 
    match '/signout', to: 'sessions#destroy',  via: 'delete' 
end 

現在的方法將可用於/後與管理將去會話控制器創建方法

檢查這條路線

match '/manager', to: 'sessions#create', via: 'post'

這種方法說。路線名稱是/managers控制器是sessionssessions#createcreate是從sessions#create控制器會話的方法。

1

更改爲POST方法

Rails.application.routes.draw do 
    resources :users 
    resources :sessions, only: [:new, :create, :destroy] 
    root 'static_pages#home' 
    match '/manager', to: 'static_pages#manager', via: 'post' 
    match '/signin', to: 'sessions#new',   via: 'get' 
    match '/signout', to: 'sessions#destroy',  via: 'delete' 
end 

添加manager方法StaticPagesController

class StaticPagesController < ApplicationController 

    def manager 
    # Create logic goes here 
    end 

end