我似乎无法弄清楚为什么这种比较不起作用:
if params[:password].to_s == params[:conf_password].to_s
#do something
else
#do something else
结果始终为false,执行else块...任何人都知道为什么?
编辑:检查输出显示两个参数相同。使用password_field_tag中的“form_for”和“conf_password”收集“密码”。
如果'form_for'中包含“conf_password”,则不会抛出此类方法错误,因为模型中没有列conf_password。也许有更好的方法来收集这个参数,这可能会解决问题。
关于params的一些日志输出。
PARAMS: {"password"=>"1234567", "company"=>"company1", "companykey"=>"ckey2"}, "conf_password"=>"1234567",
获取这些值的代码
<tr> <td> <%= label_tag(:password, "Password") %> </td> <td> <%= f.password_field :password %> </td> </tr>
<tr> <td> <%= label_tag(:conf_password, "Confirm Password") %> </td> <td> <%= password_field_tag(:conf_password) %> </td> </tr>
答案 0 :(得分:3)
在我看来,您不应该访问:password
和:conf_password
,就像:password
参数在哈希中一样,而:conf_password
则不是。
当您声明form_for时,您还要定义包含:password
的哈希,并且您必须使用:password
访问new Object(params[:object]).password
- 参数。您也可以使用params[:object][:password]
访问参数。
基于复制粘贴编码的未经测试的示例表单
<%= form_for @person do |f| %>
<%= f.label :first_name %>:
<%= f.text_field :first_name %><br />
<%= f.label :password %>:
<%= f.text_field :password %><br />
<%= f.submit %>
<% end %>
未经测试的示例控制器基于演绎而非知识
if Person.create(params[:person]).password == 'foobar'
# go on
else
# fail
end
有关详细说明,请参阅API:http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html