jRuby / Rails如何将一个哈希值与另一个哈希值进行比较

时间:2011-12-12 10:51:06

标签: ruby-on-rails ruby hash jruby

我所拥有的是2个散列,其中一个从后端转储,后者没有专门处理rails。另一种是手动构建的硬编码哈希。有点像已知可能性的索引。

我想要做的是比较后端吐出的内容和我在散列中的内容,比如索引,所以当我渲染视图时,我可以让显示看起来更有吸引力。

现在我可以使用php和数组

做类似的事情
array("monkey" => "Monkey", "server" => "server")
and then do a str_replace("monkey", $var, array)
好吧,这是一个糟糕的例子,但是自从我玩php之后已经有一段时间了,而且我有点生气了。但这就是概念

最终的结果是,当我发现“猴子”在一个中我想用“猴子”替换它时,为了视图的目的。

修改/修订/加成

Ok意识到我没有使用哈希,我实际上正在使用数组或JSON对象..

pretty_service = {"namenode" => "Name Nodes","secondarynamenode" => " Secondary Name Nodes", "datanode" => "Data Nodes", "web" => "Web", "tasktracker" => "Task Trackers", "jobtracker" => "Job Trackers", "oozie" => "Oozie", "single-namenode" => "Single NameNode", "single-databse" => "Single Database" }

我想要的是,如果我检查的字符串包含我要用值替换它的任何一个键。不知道如何使用rails样式编码完全做到这一点。下面已经有了一些不错的概念,但我已经尝试了它们,它们似乎对我不起作用。现在知道了,有没有不同的方法来解决这个问题?

3 个答案:

答案 0 :(得分:2)

String.gsub可以做到这一点。

table = {"monkey"=>"Monkey", "teh"=>"the"}
str = "Don't feed teh monkey"
p str.gsub(Regexp.union(table.keys), table)
#=> "Don't feed the Monkey"

答案 1 :(得分:0)

以下是使用哈希函数的示例。您可以根据自己的需要进行调整:

if my_hash.keys.include?("monkey")
   what_i_will_render.gsub!("monkey",my_hash["monkey"])
end

答案 2 :(得分:0)

find = {:a => 'a', :b => 'b', :c => 'c'}
replace = {:a => 'A', :b => 'B'}
replace.merge(find) # {:a => 'A', :b => 'B', :c => 'c'}