改变版本的tap – 或管道表达式的方法?

tap会将self传递给传递给它的块,并返回self不变。 我经常发现自己希望有一个版本的tap返回块的返回值,而不是self 。 例如: [1,2].inject(:+).tap {|x| x * 3} #=> returns 3, but I want 9 是否有任何内置方法可以实现这一目标? 典型的解决方案 – 创建一个临时局部[1,2].inject(:+)来存储[1,2].inject(:+)的输出,并将其乘以3 – 看起来像kludgy。

Rails Partial(Rails 3,HAML)任意慢

我使用的是Rails 3.0.1,HAML 0.3.22和Mongrel 1.1.5(以及MongoMapper而不是AR)。 我正在渲染一个列表,每个列表项都是它自己的部分。 每次页面渲染时,其中一个列表项部分需要花费几乎100倍的时间来渲染(并且每次都是一个任意不同的。另外,不用说,每个项目基本上都有相同的数据)。 知道这里发生了什么吗? 我应该将逻辑移动到块而不是部分吗? Rendered shared/_head.html.haml (5.6ms) Rendered tasks/_incomplete_task.haml (6.2ms) Rendered tasks/_incomplete_task.haml (6.4ms) Rendered tasks/_incomplete_task.haml (6.9ms) Rendered tasks/_incomplete_task.haml (6.2ms) Rendered tasks/_incomplete_task.haml (6.0ms) Rendered tasks/_incomplete_task.haml (6.1ms) Rendered tasks/_incomplete_task.haml (6.4ms) Rendered tasks/_incomplete_task.haml (6.2ms) Rendered tasks/_incomplete_task.haml (7.0ms) Rendered tasks/_incomplete_task.haml (531.6ms) Rendered tasks/_incomplete_task.haml (8.0ms) Rendered tasks/_incomplete_task.haml (6.8ms) Rendered tasks/_incomplete_task.haml (6.5ms) Rendered shared/_tasks.html.haml (633.0ms)

将float格式化为最小小数位数

我在rails中存储了一个小数,我需要将它显示为货币,如下所示: 11.1230 => “$11.123” 11.1000 => “$11.10” 11.0100 => “$11.01” 11.1234 => “$11.1234” 有什么简单的方法吗?

如何枚举运行ec2实例并使用ruby将它们加载到数据库中?

我正在使用aws-sdk gem,我无法想出如何列出所有正在运行的ec2实例并将它们加载到数据库中。 我需要一个如何做到这一点的方法。

没有任何框架的Ruby网页从头开始

我正试图从头开始学习ruby for web。 我知道PHP,我是ruby的新手。 我不想在开始时使用任何框架。 尝试创建简单的2-3页练习。 我搜索了很多,但没有任何例子来创建ruby和机架的网页,并在任何浏览器中运行它。 如果您有任何url或在线资料可以开始,请分享。

奇怪的乘数运算符行为在两个数组中进行哈希组合

我一直在寻找一种方法将两个数组转换为单个哈希。 我发现了这样的事情: a1 = [1,2,3] a2 = [?A, ?B, ?C] Hash[*a1.zip(a2).flatten] 我认为这种语法Hash[a1.zip a2] ,因为Hash[a1.zip a2]会做同样的事情。 但更重要的是,我不明白需要*运算符。 我知道它将对象转换为数组或类似的东西(但显然不是以[]方式)。 当我执行: a = a1.zip(a2).flatten => [1, “A”, 2, “B”, 3, “C”] a = *a1.zip(a).flatten => [1, “A”, 2, “B”, 3, “C”] 什么都没发生,而且对于我所知道的*运算符,这似乎是正常的行为。 那么,为什么呢 Hash[*a1.zip(a2).flatten] => {1=>”A”, 2=>”B”, 3=>”C”} Hash[a1.zip(a).flatten] => {} 如果参数看起来相同,则返回不同的值? 我想我一定错过了关于*运算符的东西。 谢谢。

添加到Ruby对象

我一直在读Ruby。 就像语言的简单化一样。 我一直在努力查找,并自己解决。 我正在寻找对象的一些帮助以及我如何向它添加数据。 我想创建一个名为Athlete的Object,我从.txt或.csv文件中读取它们的Jersey号和名称。 class Athlete def setNumber (jNum) @mynum = jNum end def getNumber return @mynum end def setName (jName) @myname = jName end def getName return @myname end end 那是我怎么设置课程的? 然后我在文件中读到: myAthlete = Athlete.new fileObj = File.new(uInput, “r”) while (line = fileObj.gets) jData = line.split(” “) myAthlete.setNumber(jData.at(0)) myAthlete.setName(jData.at(1)) end fileObj.close 这是我开始有点迷失的地方。 我知道它可以完美地分割数据,因为我已经尝试过只使用Array.new […]

如何从字符串的末尾获取数字

我仍然是Ruby的新手,我有点卡住了。 我需要从字符串的末尾得到一个数字。 假设我有字符串“potato85”,我需要85.数字中的位数可以变化,就像它可能是“potato8” – “potato8585”。 有什么方法可以拆分字符串并获得第一部分和数字?

在en.yml文件中更改属性名称不起作用

我在rails项目的ruby中更改了en.yml文件中的属性名称。 按钮工作正常。 但是字段属性没有改变。 这是我的模特, class Enr::AffordableWarmth < ActiveRecord::Base self.table_name = "AffordableWarmth" self.primary_key = 'Record_No' validates_presence_of :No_Bedrooms, :No_Bedspaces, :Max_Annual_Energy_Cost validates :No_Bedrooms, uniqueness: { scope: :No_Bedspaces, message: "already exists!" } validates_numericality_of :No_Bedrooms, :No_Bedspaces, :Max_Annual_Energy_Cost end en-GB.yml文件 en-GB: helpers: submit: enr_rds_dea: create: ‘Create new user’ update: ‘Update’ enr_affordable_warmth: create: ‘Create’ update: ‘Update’ activerecord: models: AffordableWarmth: attributes: AffordableWarmth: No_Bedrooms: […]

在单独的文件中定义时,将Ruby类添加到模块

我想通过将它们放在一个模块中来命名我的Ruby类。 实际上,如果我决定发布我的Ruby gem以使类名不与另一个gem中的现有类冲突,这是一个好主意。 我知道我可以为A::B类做以下事情: module A class B end end 但是,上面的内容非常麻烦,因为我需要将所有类定义放在一个Ruby源文件中,以便将它们放在模块下。 我宁愿将我的类定义保存在单独的源文件中,就像Java项目一样,那么当它们在单独的文件中定义时,如何将类添加到模块中呢?