0

首先,我对 Rails 很陌生——我正在玩一个小登录应用程序,让它一切正常,并决定尝试简单的表单——但是我无法让我的登录表单与 gem 一起使用。

这是我曾经和曾经工作过的;

<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 %>

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

谢谢!

4

2 回答 2

2

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

检查 params.inspect

于 2013-01-07T19:24:37.853 回答
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

谢谢扎巴!

于 2013-01-08T03:33:44.090 回答