草庐IT

ruby - 在 inject 方法中初始化一个 hash,以防止值为 nil

我正在尝试编译哈希列表中给定哈希键的所有值。我有以下有效的方法。[{'a':1,'b':2,'c':3},{'a':4,'b':5,'c':6},{'a':7,'b':8,'c':9}].inject({})do|hash,item|item.eachdo|key,value|hash[key]=[]ifhash[key].nil?hash[key]这是很棒的结果:{:a=>[1,4,7],:b=>[2,5,8],:c=>[3,6,9]}我的问题:是否有更优雅的方法来初始化散列,这样我就不需要检查下一行中的nil情况?hash[key]=[]ifhash[key].nil?我已经尝试将

ruby - 在 ActiveRecord 上使用 to_json 时跳过具有 nil 值的属性

我想知道是否有任何方法可以跳过具有nil的属性ActiveRecord上to_json时的值。默认行为是包含一个nil值。有没有办法让这个值不出现? 最佳答案 @lars的回答适用于单个对象,但对于ActiveRecord对象数组,您将不得不遍历数组的每个元素并进行转换。如果每次为该模型调用.to_json或render:json=>时都希望进行此转换,则可以覆盖模型中的as_json函数像这样:classModel..defas_json(options={})super(options).reject{|k,v|v.nil?}e

ruby - gem 安装/更新失败,出现 "no implicit conversion of nil into String"

使用rvm,每当我尝试安装或更新gem(或ruby​​gems)时,我都会遇到同样的错误:$gemupdate--systemUpdatingrubygems-updateFetching:rubygems-update-2.6.6.gem(100%)ERROR:Whileexecutinggem...(TypeError)noimplicitconversionofnilintoString然而,我的系统ruby​​工作正常。 最佳答案 这是2.5.x版ruby​​gem安装程序中的错误。如下修补文件installer.rb(在我

ruby-on-rails - 我怎样才能返回 nil 而不是丢失哈希键的错误?

我有一个散列,我正在寻找其中的某个键。但有时hash本身可能为nil。在这种情况下,我不希望hash["key"]返回undefinedmethod'[]'fornil:NilClass错误。我希望它返回nil。在其他类似情况下,我可以使用try,如下所示:nil.try(:key)=>nil但我无法获得相同的方法使用我的哈希。换句话说,我正在寻找一种产生如下结果的方法:>@hash=nil>@hash.try(:["key"])=>nil 最佳答案 各种to_X方法通常是将nil安静地转换为您真正感兴趣的空实例的便捷方法,而无需使

ruby - 查找数组中的第一个非 Nil 元素

我有这个代码:default_group_id=@group_list[0].list[0].name但有时@group_list[0]的列表成员是空的,所以我的代码崩溃了:)所以我需要找到它的列表成员不为nil的第一个@group_list[i]并使用它。我们如何做到这一点?结构如下: 最佳答案 Enumerable#find和传递的Object#itself是一个方便的快捷方式:@group_list.find(&:itself) 关于ruby-查找数组中的第一个非Nil元素,我们在

ruby-on-rails - .where(nil) 和 .all 有什么区别?

我一直在用Product.all但是我看到的很多代码都在使用Product.where(nil)填充变量时。这个site有一个我发现使用where(nil)的例子。我搜索了文档,发现where(nil)替换了scoped但无法弄清楚它的作用。 最佳答案 我相信过去是有区别的,但是从Rails4开始就不一样了。这是因为从Rails4.all返回一个关系,而它用于返回一个数组。所以之前:Product.all立即向数据库发起查询以返回所有记录,这些记录将加载到内存中的数组中。基本上,您是在告诉Rails您现在需要数据。参见thisque

ruby-on-rails - NoMethodError:ActionMailer::TestCase 中 nil:NilClass 的未定义方法 'env'

我开始使用ruby​​onrails并创建了一个示例应用程序。在这个应用程序中,我有一个邮件类和一个测试生成的邮件类。除了来自ActionMailer::TestCase的测试,我设法使所有测试都正常工作。每次运行测试时,我都会收到一条错误消息:NoMethodError:undefinedmethod'env'fornil:NilClass.我生成的邮件程序测试方法如下所示:test"new_project"domail=ProjectMailer.new_projectassert_equal"Newproject",mail.subjectassert_equal["to@exa

ruby-on-rails - 无方法错误 : undefined method 'user' for nil:NilClass

我正在阅读APIsonRails这本书,并且super困在第5章,试图测试sessionController。我收到以下错误,似乎无法找到它。有没有一种很好的方法来追查这些类型的错误?我错过了什么?1)Api::V1::SessionsControllerPOST#createwhenthecredentialsarecorrectreturnstheuserrecordcorrespondingtothegivencredentialsFailure/Error:post:create,{session:credentials}NoMethodError:undefinedmetho

ruby koans about_nil.rb -- 问题 fr/newbie

我是编程的绝对初学者。我被ruby​​所吸引并设置了koans。该部分开始于:deftest_you_dont_get_null_pointer_errors_when_calling_methods_on_nil请解释这一行:rescueException=>ex我已经弄清楚了本节中的前两个公案。 最佳答案 该行指出,每当它抛出类型为Exception的异常时,都会拯救begin-rescueblock中的代码。.事实证明,Exception是所有其他异常继承自的顶级异常(例如语法错误、无方法错误等)。正因为如此,所有的异常都会被

ruby - pik 错误 : private method `gsub' called for nil:NilClass

将JRuby1.3.1添加到pik时出现错误。错误:Error:privatemethod`gsub'calledfornil:NilClass这是我的路径环境变量:C:\Users\Owner>echo%path%C:\ProgramFiles\Java\jdk1.7.0_05\bin;c:\jruby-1.7.0.preview1\bin;C:\jruby-1.3.1\bin;c:\pik这是在尝试添加1.3.1版本时:C:\Users\Owner>pikaddC:\jruby-1.3.1\binTherewasanerror.Error:privatemethod`gsub'ca