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
程式碼日誌版權宣告:
翻譯自:http://stackoverflow.com/questions/1331705/cant-put-email-address-field-on-login-form-authlogic