Ruby on rails 登录时的简单表单问题

Ruby on rails 登录时的简单表单问题,ruby-on-rails,simple-form,Ruby On Rails,Simple Form,首先,我对rails非常陌生——我正在玩一个小的登录应用程序,一切正常,并决定尝试使用简单的表单——但是我无法让我的登录表单与gem一起工作 这是我曾经和曾经工作过的 <h2>Log In</h2> <%= form_tag sessions_path do %> <div class="field"> <%= label_tag :email %> <%= text_field_tag :email, p

首先,我对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 %>
  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
登录

以下是我试图将其改为使用简单表单的内容。

<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 %>
登录
会话路径:html=>{:class=>'formvertical'}do | f |%>
false,:label=>“电子邮件地址”,:占位符=>“电子邮件地址”%>
false,:label=>Password',:placeholder=>Password'>
记得我吗

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


谢谢

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


检查params.inspect

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


检查参数。检查

明白了!非常感谢扎巴为我指明了正确的方向

我的第二种方法有效

<%= 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 %>
我必须更新到

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

谢谢扎巴

明白了!非常感谢扎巴为我指明了正确的方向

我的第二种方法有效

<%= 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 %>
我必须更新到

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

谢谢扎巴

我把它命名为{:class=>'form vertical'}do | f |%>——但是得到了错误路由错误没有路由匹配[POST]“/login”-有什么建议吗?让它工作了!谢谢你在正确的方向上提出的观点@Zabba-如果有人感兴趣,我会在8小时内发布答案,如果允许的话!:)我把它命名为{:class=>'form vertical'}do | f |%>——但是得到了错误路由错误没有路由匹配[POST]“/login”-有什么建议吗?让它工作了!谢谢你在正确的方向上提出的观点@Zabba-如果有人感兴趣,我会在8小时内发布答案,如果允许的话!:)