没有路由匹配“/ sessions / new”(导轨4正在运行)

我正在关注Rails 4 In行动书,我遇到了以下错误:

No route matches [POST] "/sessions/new" 

我不知道为什么,因为我已经按照教程去了T.这让我相信教程本身是有缺陷的。 无论如何,出于某种原因,它应该发布到会话#new,它应该发布到会话#create。 我究竟做错了什么?

sessions_controller.rb

 class SessionsController  params[:signin][:name]).first if user && user.authenticate(params[:signin][:password]) session[:user_id] = user.id flash[:notice] = "Signed in successfully." redirect_to root_url else flash[:error] = "Sorry." render :new end end end 

会议/ new.html.erb

 

Sign in



的routes.rb

  get "/signin", to: "sessions#new" post "/signin", to: "sessions#create" 

你是对的,这本书有错误。

当你有一个标签的表格

 <%= form_for :signin, method: "POST" do |f| %> 

如果rails不知道是什么:signin意味着,那么它只会复制当前的url并将表单提交给该url(在本例中为’sessions / new’),使用post动词(无论你是否指定它! )

 
....

显然,这不一定是你想要的,因为你没有/ sessions / new用于后期HTTP动词,我认为最简单的解决方案是指定路由

 post "/signin", to: "sessions#create", as: "signin" 

并在您的form_for

 <%= form_for signin_path do |f| %>