我试图在http://railscasts.com/episodes/250-authentication-from-scratch实现用户身份验证示例。当我使用他们的代码时,它工作得很好。但是当我尝试使用simple_form_for
-tag 时,我得到一个路由错误。
为了更好地概述示例代码的摘录:
路线.rb:
get "log_out" => "sessions#destroy", :as => "log_out"
get "log_in" => "sessions#new", :as => "log_in"
get "sign_up" => "users#new", :as => "sign_up"
root :to => "users#new"
resources :users
resources :sessions
会话/new.html.erb:
<h1>Log in</h1>
<%= form_tag sessions_path do %>
<p>
<%= label_tag :email %><br />
<%= text_field_tag :email, params[:email] %>
</p>
<p>
<%= label_tag :password %><br />
<%= password_field_tag :password %>
</p>
<p class="button"><%= submit_tag "Log in" %></p>
<% end %>
我基本上保留了 routes.rb 并且只更改了 session/new.html.erb:
<%= simple_form_for(log_in_path, :html => { :class => 'login form' }) do |f| %>
...
<%= button_tag(type: 'submit', class: "button") do%>
<%= image_tag('key.png', :alt => 'login') %> Log In
<%end%>
这是我得到的错误:
No route matches [POST] "/log_in"
无论我使用sessions_path
还是log_in_path
在simple_form_for
标签中,我都会收到此错误。
为了简单起见,我缩短了我的版本,因为它有点塞满了类定义等。我真的希望您能迅速指出我所缺少的内容,因为我已经浪费了大量时间来查找它。
Edit1由于我使用此代码log_in_path
而不是sessions_path
. 但问题仍然存在。