不能把电子邮件地址栏登录表单上(Authlogic) [英] Can't put email address field on login form (Authlogic)

查看:96
本文介绍了不能把电子邮件地址栏登录表单上(Authlogic)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我有Authlogic工作的罚款与此 user_sessions /新查看:

So I have Authlogic working fine with this user_sessions/new view:

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

当我加载认为我得到这个错误:

I get this error when I load the view:

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

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

推荐答案

您打算对这个错误的方式:

You are going about this the wrong way:

尝试:

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没有电子邮件的概念(它只知道登录)。

Your UserSession has no concept of email (it just knows about login).

它贯穿找到给出一个登录用户,可以拦截并重写的过程(与 find_by_login_method )。对于一个额外的好处,你也可以重写, login_field password_field 甚至 verify_password_method

It runs through a process of finding a User given a login, which you can intercept and override (with the find_by_login_method). For an added bonus you can also override, login_field and password_field or even verify_password_method

这篇关于不能把电子邮件地址栏登录表单上(Authlogic)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆