如何在rails中提取与控制器调用一起发送的参数的计算哈希值?

时间:2013-04-09 09:32:39

标签: ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2

我可以像params [:id]一样逐一提取,但是如何提取所有这些像params [:all]或参数['all']。

Parameters: {"id"=>"aom7v66e309yjkd2x0aq", "video_type"=>"trailer"}

1 个答案:

答案 0 :(得分:2)

Rails参数是HashWithIndifferentAccess的实例,Hash的子类。

params.class
# => HashWithIndifferentAccess
params.is_a? Hash
# => true

您可以使用Hash获取整个params

params
# => {"id"=>"aom7v66e309yjkd2x0aq", "video_type"=>"trailer"}

如果您需要简单Hash

,请使用#to_hash
params.to_hash
# => {"id"=>"aom7v66e309yjkd2x0aq", "video_type"=>"trailer"}
params.to_hash.class
# => Hash

#keys的密钥:

params.keys
# => ["id", "video_type"]

#values的值:

params.values
# => ["aom7v66e309yjkd2x0aq", "trailer"]

要提取特定密钥,您可以使用#slice

params = {"a"=>1, "b"=>2, "c"=>3}
params.slice("a", "c")
# => {"a"=>1, "c"=>3}

或其对应#except

params = {"a"=>1, "b"=>2, "c"=>3}
params.except("b")
# => {"a"=>1, "c"=>3}