2012-06-27 14 views
2

<%=password_field 'email_setting','emailpasswd' %>密碼文本框導軌3中的值爲空?

在此@ email_setting.emailpasswd中有值密碼(@ email_setting.emailpasswd =「password」)。

但是在email_setting窗體中編輯密碼文本框是加載空的。而不是我需要顯示一些字符(#######)來表明密碼已經輸入。

我用Rails 3

回答

2

這是軌道的安全預防措施,該密碼字段不預先填充。否則,它們將在頁面源代碼中以純文本顯示。

如果你真的想雖然有顯示出來,需要繞行的形式助手和後備純HTML:

<input type="password" name="email_setting[emailpasswd]" value="<%= @email_setting.emailpasswd %>" /> 

但是,不會,如果你有你的密碼散列工作。你不能「解密」散列密碼,所以你不能在這裏以純文本顯示它們。

2

你也可以做這樣的事情:

在/config/initializers/my_constants.rb ,請在密碼輸入框中設置一個常數和您要顯示給用戶的值。

STARS_PASSWORD = '*******' 

在用戶模型中,創建一個方法,我們將從窗體調用以確定在密碼輸入框中顯示給用戶的內容。

class User < ActiveRecord::Base 
    def password_form_value 
     password.present? ? STARS_PASSWORD : '' 
    end 
end 

在窗體中,將STARS_PASSWORD顯示爲輸入表單上的值(如果實際上用戶已設置了密碼)。

<%=form.password_field :password, :value => @user.password_form_value %> 

在UsersController中,如果提交的密碼是STARS_PASSWORD,則在更新前刪除提交的密碼。

params[:user].delete :password if params[:user][:password] == STARS_PASSWORD 

注意:如果你對用戶模型密碼驗證(例如,密碼需要有字母和數字),你還需要修改驗證允許STARS_PASSWORD。