ruby中to_h方法的奇怪行为

时间:2015-03-25 23:11:28

标签: ruby-on-rails ruby

我有条件var需要转换为哈希但我总是得到一个空哈希,我不知道为什么......调试信息如下。

0> p conditions
App 3069 stdout: {"email"=>"asdf.yuan@asdf.com"}
=> {"email"=>"asdf.yuan@asdf.com"}

0> p conditions.class
App 3069 stdout: ActionController::Parameters
=> ActionController::Parameters

0> p conditions.to_h
App 3069 stdout: {}
=> {}

我试着去,,它只是表现得很受欢迎!!!真的很奇怪!!!

1 个答案:

答案 0 :(得分:3)

没什么好奇的; p conditions.to_h正在正确返回{},因为没有任何密钥被标记为允许。

请查看该方法的文档:http://api.rubyonrails.org/classes/ActionController/Parameters.html#method-i-to_h

  

to_h()

     

返回此参数的安全哈希表示,并删除所有未允许的键。

尝试按照以下方式设置密钥:

> permitted_conditions = conditions.permit(:email)
> permitted_conditions.to_h
=> {"email"=>"asdf.yuan@asdf.com"}

to_unsafe_h有您最初寻找的行为。