0

我试图在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_pathsimple_form_for标签中,我都会收到此错误。

为了简单起见,我缩短了我的版本,因为它有点塞满了类定义等。我真的希望您能迅速指出我所缺少的内容,因为我已经浪费了大量时间来查找它。

Edit1由于我使用此代码log_in_path而不是sessions_path. 但问题仍然存在。

4

1 回答 1

1

看起来你错过了你的 routes.rb:

post "log_in" => "sessions#create", :as => "log_in"

我不知道你的会话控制器上是否有创建操作....

于 2013-02-28T16:11:36.977 回答