Simple_tag不会产生错误,而form_tag不会产生错误

时间:2013-02-28 15:49:09

标签: ruby-on-rails simple-form

我试图在http://railscasts.com/episodes/250-authentication-from-scratch实施用户身份验证示例。当我使用他们的代码时,它工作得很好。但是当我尝试使用simple_form_for - 标签时,我收到路由错误。

为了更好地概述示例代码的摘录:

routes.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并且只更改了sessions / 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。但问题仍然存在。

1 个答案:

答案 0 :(得分:1)

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

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

如果你在session-controller上有创建动作,那么我就不知道了。