0
我有一個簡單的註冊表格:的Rails的form_for password_field返回類型
<h1>Signup as a new user</h1>
<%= form_for(@user) do |f| %>
<p>
<%= f.label :username %>
<%= f.text_field :username %>
</p>
<p>
<%= f.label :password %>
<%= f.password_field :password %>
</p>
<p>
<%= f.submit "Save" %>
</p>
<% end %>
重定向到UsersController的create方法:
def create
password = params[:password].crypt("$1$}")
@user = User.new(:username => params[:username], :password => password)
@user.save
flash[:message] = "User #{User.username} created!"
redirect_to user_path(@user)
end
但是,這將引發錯誤undefined method crypt' for nil:NilClass
。爲什麼密碼是Nil?我檢查了HTML PARAMS和得到這個:
Parameters: {"utf8"=>"✓", "authenticity_token"=>"aAcaURTLKfwmXULEUzLX36tZAKER/kMxKKOROOXgoU8=", "user"=>{"username"=>"Chris", "password"=>"[FILTERED]"}, "commit"=>"Save"}
是否"[FILTERED}"
意味着它不是一個字符串?我如何從params
訪問它?
'「[FILTERED]」'表示特定參數已從日誌中刪除,因爲它是敏感信息。根據您的Rails版本,任何名爲「密碼」的字段都會自動過濾。有關更多信息,請參閱此頁面:http://guides.rubyonrails.org/action_controller_overview.html#parameter-filtering – Justin 2012-02-27 23:12:02