Tag: hash

是否定义了嵌套哈希?()

确定@hash[:key1][:key2]是否最简洁的方法是什么,如果@hash或@hash[:key1]为零,则不会抛出错误? 如果@hash[:key1]存在,则( defined?(@hash[:key1][:key2])返回True(它不确定:key2是否定义了:key2 )

如何在Ruby中迭代部分哈希?

h = Hash.new (1..100).each { |v| h.store(v * 2, v*v) } 在不使用密钥的情况下迭代哈希的给定部分的最佳方法是什么? 例如,从元素10到元素20? 使用Ruby 1.9.3。 编辑 – 回应戴夫的评论: 最初我想通过密钥访问数据(因此哈希)。 但我也想按元素编号进行迭代。 顺便说一句,每个元素都是一个哈希。 那么,设计散列哈希值或哈希数组的最佳方法是什么,可以通过元素号迭代或通过键访问? 数据如下所示。 缺少日期。 6/23/2011 – > 5,6,8,3,6 6/26/2011 – > 6,8,4,8,5 6/27/2011 – > 8,4,3,2,7

ActiveModel :: ForbiddenAttributesError使用update_attributes创建了params hash

我正在尝试使用simple_form编辑/更新模型记录,但表单不会直接更改模型字段。 相反,我提供了几个check_box_tag字段,用于告知更新需要更改的字段。 因此,更新未收到可用于更新属性的params [:device]哈希。 我试图创建这个哈希,但是当我发出@ device.update_attributes(params [:device])时,我得到了ForbiddenAttributesError。 我相信我的强参数列表是正确的。 如果我允许在编辑视图中处理一个模型字段(名称),我会收到预期的参数[:device]哈希,一切正常。 如果我禁用该字段,因为我不希望它被更改,那么我需要自己创建该哈希并收到错误。 当我查看我创建的哈希时,它看起来等同于视图传递的哈希。 我不明白为什么会失败。 环境是Ruby 2.0.0,Windows 8.1上的Rails 4.1和RubyMine 6.3。 表单是: Device: 我发送f.input:name,disabled:false并允许视图生成params [:device]时收到的params [:device]是: ActionController::Parameters (3 element(s)) “{“name”=>”D105”, “password”=>”D105Dvgr”, “password_confirmation”=>”D105Dvgr”}” 一切正常。 我创建的参数[:device]是: ActionController::Parameters (3 element(s)) “{“name”=>”D106”, “password”=>”D106VdAd”, “password_confirmation”=>”D106VdAd”}” 并且,我收到禁用属性错误,即使我看到两者之间没有区别。 更新是: class DevicesController ‘Not authorized as an administrator.’ @device = Device.find(params[:id]) pwd_msg = “” if params[:chg_pwd] pwd_gen = […]

Ruby – 找到散列中最大值的键

我有一个哈希,我想返回哈希值的最大值的键(或键/值对)。 因此,如果只有一个真正的最大值,它将返回该一个键; 但是,如果有多个具有相同值的键/值对,则它将返回所有这些键。 我怎样才能在Ruby中实现这一目标? my_hash.max_by {|k,v| v} #only returns one key/value pair

Ruby:将嵌套的Ruby哈希转换为非嵌套的Ruby哈希

现在,我有一个服务器调用踢回以下Ruby哈希: { “id”=>”-ct”, “factualId”=>””, “outOfBusiness”=>false, “publishedAt”=>”2012-03-09 11:02:01”, “general”=>{ “name”=>”A Cote”, “timeZone”=>”EST”, “desc”=>”À Côté is a small-plates restaurant in Oakland’s charming Rockridge district. Cozy tables surround large communal tables in both the main dining room and on the sunny patio to create a festive atmosphere. Small plates reflecting the best of seasonal Mediterranean cuisine are served […]

通过键名从ruby中的多维哈希中提取特定值

假设我有一个多维哈希,并且在其中一个子哈希中我有一个key => value对,我需要通过key检索它。 我该怎么做? 示例哈希: h={:x=>1,:y=>2,:z=>{:a=>{:k=>”needle”}}} h={:k=>”needle”} 关键是永远:k,我需要得到“针” 我注意到ruby1.8中的哈希没有“扁平”function,但如果它在那里,我想我只是做 h.flatten[:k] 我想我需要为此编写一个递归函数? 谢谢

Ruby组按键值散列

我有一个数组,由MongoDB执行的map / reduce方法输出,它看起来像这样: [{“minute”=>30.0, “hour”=>15.0, “date”=>5.0, “month”=>9.0, “year”=>2011.0, “type”=>0.0, “count”=>299.0}, {“minute”=>30.0, “hour”=>15.0, “date”=>5.0, “month”=>9.0, “year”=>2011.0, “type”=>10.0, “count”=>244.0}, {“minute”=>30.0, “hour”=>15.0, “date”=>5.0, “month”=>9.0, “year”=>2011.0, “type”=>1.0, “count”=>204.0}, {“minute”=>45.0, “hour”=>15.0, “date”=>5.0, “month”=>9.0, “year”=>2011.0, “type”=>0.0, “count”=>510.0}, {“minute”=>45.0, “hour”=>15.0, “date”=>5.0, “month”=>9.0, “year”=>2011.0, “type”=>10.0, “count”=>437.0}, {“minute”=>0.0, “hour”=>16.0, “date”=>5.0, “month”=>9.0, “year”=>2011.0, “type”=>0.0, “count”=>469.0}, {“minute”=>0.0, “hour”=>16.0, “date”=>5.0, “month”=>9.0, “year”=>2011.0, “type”=>10.0, “count”=>477.0}, {“minute”=>15.0, “hour”=>16.0, “date”=>5.0, […]

访问Ruby哈希变量

我对ruby和sinatra很新,但基本上我有这条路线: put ‘/user_list/:user_id’ do puts request.params[“model”] end 它返回以下内容 {“password”:”36494092d7d5682666ac04f62d624141″,”username”:”nicholas”,”user_id”:106,”firstname”:”Nicholas”,”email”:”nicholas@macpractice.com”,”is_admin”:0,”lastname”:”Rose”,”privileges”:””} 我现在很难访问每个人的价值观。 它似乎不是哈希格式,所以我不能真正做到 request.params[“model”][:password] 它只返回零.. 我只需要知道如何访问这些变量,或者如何配置我的请求参数以获得良好的格式来访问变量。

我需要做什么才能让Hash.from_xml()工作?

我在我的代码中安装了’ActiveSupport’并且需要’active_support’,但是当我尝试使用Hash.from_xml()方法时,我得到了“No Method Error”。 我错过了什么? $ gem list 收益: \*** LOCAL GEMS \*** activesupport (3.2.6) bundler (1.1.4) i18n (0.6.0) json (1.7.3) mime-types (1.19) multi_json (1.3.6) rake (0.9.2.2) rest-client (1.6.7) rubygems-bundler (1.0.3) rvm (1.11.3.5) 和: $ ruby -v 收益: ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin11.4.0] file.rb的内容是: require ‘active_support’ require ‘rest-client’ require ‘json’ token = “xxx” user = […]

为什么哈希冻结的字符串键?

根据规范 ,用作哈希键的字符串被复制和冻结。 其他可变对象似乎没有这么特别的考虑。 例如,使用数组键,可以使用以下内容。 a = [0] h = {a => :a} h.keys.first[0] = 1 h # => {[1] => :a} h[[1]] # => nil h.rehash h[[1]] # => :a 另一方面,使用字符串键不能完成类似的操作。 s = “a” h = {s => :s} h.keys.first.upcase! # => RuntimeError: can’t modify frozen String 当涉及到散列键时,为什么字符串被设计为与其他可变对象不同? 是否存在此规范变得有用的用例? 该规范还有哪些其他后果? 我实际上有一个用例,其中没有关于字符串的这种特殊规范可能是有用的。 也就是说,我用yaml gem读取了一个描述哈希的手动编写的YAML文件。 键可能是字符串,我想在原始YAML文件中允许不区分大小写。 当我读取文件时,我可能会得到这样的哈希: […]