草庐IT

mongodb - 按Mongo嵌套数组中文档的值排序

全部标签

ruby-on-rails - 在 Rails 中,如何使用字符串数组实现 HTML 选择菜单?

我有一个FinancialDocument#document_type模型属性。我想让用户从由字符串数组填充的HTML选择菜单中选择文档类型...doctypes=['Invoice','Packingslip','Other']对于每个选项,显示的标签和返回的值都是相同的。我查看了select和collection_select助手,但它们似乎适合选择子模型,而不仅仅是一个String值。我找不到如何让它们达到我的目的。这是我正在尝试的方法(我使用的是Haml,而不是Erb)...form_for(@financial_document)do|f|-doctypes=['Invoic

ruby - 将字符串插入数组中的数组会产生意外结果

我在Ruby中有一个包含5个空数组的数组。我正在尝试使用运算符将字符串插入第一个数组,但结果是字符串被插入所有数组。请帮助我理解这一点。预期的输出是:#=>[["car"],[],[],[],[]]但我得到:#=>[["car"],["car"],["car"],["car"],["car"]]IRB转储:1.9.3-p194:001>output=Array.new(5,[])=>[[],[],[],[],[]]1.9.3-p194:002>output.inspect=>"[[],[],[],[],[]]"1.9.3-p194:003>output[0].inspect=>"[]"

Ruby 的 "each"方法没有遍历数组中的所有项目?

我正在尝试以下代码:a=[1,2,3,4]a.eachdoputs"Removing#{a.last}"a.popend但我并没有弹出所有四个数字,而是只弹出了前3个数字。实际上,执行类似putsa.length的操作会返回1并且puts-ing显示元素“1”仍然存在。我需要如何正确使用该方法?(我正在使用Ruby2.0)。 最佳答案 我怀疑发生这种情况是因为您在修改列表时迭代了列表的元素。尝试以下操作:a=[1,2,3,4]untila.empty?doputs"Removing#{a.last}"a.popend

ruby-on-rails - 没有路由匹配嵌套资源的 [DELETE]

我有一个嵌套模型设置,其中用户有多个制造商,制造商有多个生产线。当我尝试从行索引中删除该行的实例时,我收到一条错误的路由消息。我不确定我做错了什么,但这可能很简单,希望有人能在这里拯救我一些心痛。我已经阅读了hartl的资料,但我对嵌套资源和路由仍然非常陌生。===模型===classUser======classManufacturer======classLine======lines_controller.rbclassLinesController=====PrefixVerbURIPatternController#Actionmanufacturer_linesGET/ma

arrays - 通过索引拒绝 Ruby 数组元素的惯用方法

给定一个Ruby数组ary1,我想生成另一个数组ary2,它具有与ary1相同的元素,除了那些在一组给定的ary1索引处。我可以将这个功能猴子修补到Ruby的Array类上classArraydefreject_at(*indices)copy=Array.new(self)indices.uniq.sort.reverse_eachdo|i|copy.delete_atiendreturncopyendend然后我可以像这样使用它:ary1=[:a,:b,:c,:d,:e]ary2=ary1.reject_at(2,4)puts(ary2.to_s)#[:a,:b,:d]虽然这很好用

ruby-on-rails - 如何按散列值在 JSON 散列数组中进行搜索?

我正在使用Postgres的JSON数据类型来存储一些信息。例如,我有一个模型User,它有一个字段locations,它包含一个json文档(包含键和值对的对象数组),格式如下:[{"name":"Location1",kind:"house"},{"name":"Location2",kind:"house"},{"name":"Location3",kind:"office"},...{"name":"LocationX",kind:"house"}]我想用.where查询JSON数据类型。我想查询至少有一个位置为kind=office的用户。谢谢!

ruby-on-rails - 如何在与 rails 的 session 中设置多维数组

我正在尝试做这样的事情:session[:continent][:filter]=params[:filter]但它不起作用,我收到了这个错误:Youhaveanilobjectwhenyoudidn'texpectit!YoumighthaveexpectedaninstanceofArray.Theerroroccurredwhileevaluatingnil.[]= 最佳答案 您需要先将session[:continent]初始化为Hash。试试这个:session[:continent]||={}session[:conti

ruby - 将多个变量与单个表达式中的值进行比较

我有两个变量a和b。我想将a和b都与一个值进行比较,例如10。我可以这样做:10==a&&10==b但是,我想知道是否有任何方法可以将它写成一个表达式?(例如像a==b==10) 最佳答案 [a,b,3].all?{|x|x==10}但在这种情况下[].all?{|x|x==10}也会返回true 关于ruby-将多个变量与单个表达式中的值进行比较,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/qu

ruby - 迭代时添加到数组

为什么这段代码会“锁定”ruby?克服它的最好方法是什么?我在下面发布了我的解决方案。还有另一种方法可以做到这一点吗?提前致谢!代码:nums=[1,2,3]nums.each{|i|nums我的解决方案:nums=[1,2,3]adjustments=[]nums.each{|i|adjustments 最佳答案 那是因为每个都使用一个枚举器(所以如果你不断添加它,它永远不会到达末尾)。您可以在应用之前复制数组。nums=[1,2,3]nums.dup.each{|i|nums另一种方法是附加map给出的额外元素:nums=[1,

ruby - 从 Ruby 中的排序数组创建嵌套哈希——递归 group_by

我有一个对象数组,这些对象已根据这些对象的几个属性进行了排序。按照优先顺序,这些属性是foo、bar和baz。这意味着对象首先按foo排序;然后具有相同foo值的子序列按bar排序;然后具有相同foo和bar值的那些按baz排序。我想将其转换为反射(reflect)该分组的嵌套哈希。基本上我正在寻找递归Enumerable#group_by。键是foo、bar和baz的值;这些值将是对象的子哈希或数组。这是一个例子:[obj1,obj2,...objn].group_by_recursive(:foo,:bar,:baz)#=>{foo_val_1=>{bar_val_1=>{baz_