Ninguna ruta coincide con “/ session / new” (Rails 4 en acción)

Estoy siguiendo el Rails 4 In action book y me encuentro con el siguiente error:

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

No estoy seguro de por qué, ya que he seguido el tutorial a una T. Lo que me hace creer que el tutorial en sí es defectuoso. De todos modos, por alguna razón, se está publicando en sesiones # nuevo cuando debería publicarse en sesiones # crear. ¿Qué estoy haciendo mal?

session_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 

sesiones / new.html.erb

 

Sign in



rutas.rb

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

Estás en lo correcto, hay un error en este libro.

Cuando tienes un formulario para etiqueta

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

Si rails no sabe lo que significa :signin , significa que simplemente copiará la url actual y enviará el formulario a esa url (en este caso, ‘session / new’), usando el verbo post (¡ya sea que lo especifique o no! )

 
....

Obviamente, eso no es necesariamente lo que quieres porque no tienes un / session / new para el verbo HTTP de publicación, creo que la solución más fácil sería especificar una ruta

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

y en tu formulario

 <%= form_for signin_path do |f| %>