ruby-on-rails – 无法将电子邮件地址字段放在登录表单(Authlogi
发布时间:2020-12-16 20:31:37 所属栏目:百科 来源:网络整理
导读:所以我有一个这个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
所以我有一个这个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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |