ruby-on-rails – 无法将电子邮件地址字段放在登录表单(Authlogic)上

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 无法将电子邮件地址字段放在登录表单(Authlogic)上前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我有一个这个user_sessions /新视图的Authlogic工作正常:
<% form_for @user_session,:url => user_session_path do |f| %>

  <% if @user_session.errors.present? %>
    Invalid username or password
  <% end %>

  <%= f.label :login %><br />
  <%= f.text_field :login %><br />
  <br />
  <%= f.label :password %><br />
  <%= f.password_field :password %><br />
  <br />
  <%= f.check_Box :remember_me,:style => 'margin-right: 10px' %>
  <%= f.label :remember_me %><br />
  <br />
  <%= f.submit "Login" %>
<% end %>

但是当我改变的时候

<%= f.label :login %><br />
  <%= f.text_field :login %><br />

<%= f.label :email %><br />
  <%= f.text_field :email %><br />

当我加载视图时,我收到此错误

undefined method `email' for #<UserSession: no credentials provided>

但是当然,我的用户表有一个电子邮件字段等

解决方法

你会这样做错了:

尝试:

class UserSession < Authlogic::Session::Base 
  find_by_login_method :find_by_login_or_email
end

在user.rb中

def self.find_by_login_or_email(login)
   find_by_login(login) || find_by_email(login)
end

您的UserSession没有电子邮件的概念(它只是知道登录).

它运行一个找到一个给定登录用户的过程,您可以拦截和覆盖(使用find_by_login_method).另外您还可以覆盖login_field和password_field甚至verify_password_method

猜你在找的Ruby相关文章