登录时出现simple_form问题

时间:2013-01-07 19:20:29

标签: ruby-on-rails simple-form

首先我对rails非常陌生 - 我正在玩一个小的登录应用程序,如果它全部工作并决定尝试简单的表单 - 但是我无法使用我的登录表单来处理宝石。

这是我拥有和工作的内容;

<h2>Log In</h2>

<%= form_tag sessions_path do %>

  <div class="field">
    <%= label_tag :email %>
    <%= text_field_tag :email, params[:email] %>
  </div>

  <div class="field">
    <%= label_tag :password %>
    <%= password_field_tag :password %>
  </div>

  <p><%= link_to "Forgotten Password?", new_password_reset_path %></p>

  <div class="field">
    <%= check_box_tag :remember_me, 1, params[:remember_me] %>
    <%= label_tag :remember_me %>
  </div>

  <div class="actions"><%= submit_tag "Log In" %></div>

<% end %>

以下是我尝试将其更改为使用简单形式的内容。

<h2>Log In</h2>

<%= simple_form_for :sessions, :url => sessions_path, :html => { :class => 'form-vertical' } do |f| %>

    <%= f.input :email, :required =>false, :label => 'Email Address',:placeholder => 'Email Address' %>

    <%= f.input :password, :required =>false, :label => 'Password',:placeholder => 'Password' %>

  <label class="checkbox">
    <%= check_box_tag :remember_me, 1, params[:remember_me] %>
    Remember me
  </label>

  <p>
    <%= link_to "Forgotten Password?", new_password_reset_path %>
  </p>


  <%= f.button :submit "Login" %>

<% end %>

这似乎工作正常,直到我尝试登录 - 当我登录时总是显示我的无效用户名和密码消息 - 我无法弄清楚我在哪里出错了。任何帮助将不胜感激!

谢谢!

2 个答案:

答案 0 :(得分:2)

在案例1中,您可能正在接收参数:{ :email => '...', ....}而在案例2中,:sessions => { :email => '...', ....}

检查params.inspect

答案 1 :(得分:1)

知道了!非常感谢Zabba指出我正确的方向;

我的第二种方法有效;

<%= simple_form_for :sessions, :url => sessions_path, :html => { :class => 'form-vertical' } do |f| %>

        <%= f.input :email, :required =>false, :label => 'Email Address',:placeholder => 'Email Address' %>

        <%= f.input :password, :required =>false, :label => 'Password',:placeholder => 'Password' %>

      <label class="checkbox">
        <%= check_box_tag :remember_me, 1, params[:remember_me] %>
        Remember me
      </label>

      <p>
        <%= link_to "Forgotten Password?", new_password_reset_path %>
      </p>


      <%= f.button :submit "Login" %>

    <% end %>

但是我无法更新我的控制器,所以我在哪里;

  def create 
    user = User.find_by_email(params[:email])
    if user && user.authenticate(params[:password])
        ...
  end

我必须更新到;

  def create 
    user = User.find_by_email(params[:sessions][:email])
    if user && user.authenticate(params[:sessions][:password])
        ...
  end

谢谢Zabba!