Tag: ruby

Ruby的cURL的等价物?

有Ruby的cURL库吗?

按键进行散列并对值进行求和

我有一个哈希数组: [{"Vegetable"=>10}, {"Vegetable"=>5}, {"Dry Goods"=>3>}, {"Dry Goods"=>2}] 我想在这里使用inject ,但是我一直在挣扎。 我想要一个新的散列,它反映了以前散列的重复键的总和: [{"Vegetable"=>15}, {"Dry Goods"=>5}] 我在控制输出这个散列的代码,所以我可以修改它,如果有必要。 结果主要是散列,因为这可能最终嵌套任意数量的层次,然后很容易在数组上调用flatten,但是也不能将hash的键/值弄平: def recipe_pl(parent_percentage=nil) ingredients.collect do |i| recipe_total = i.recipe.recipeable.total_cost recipe_percentage = i.ingredient_cost / recipe_total if i.ingredientable.is_a?(Purchaseitem) if parent_percentage.nil? {i.ingredientable.plclass => recipe_percentage} else sub_percentage = recipe_percentage * parent_percentage {i.ingredientable.plclass => sub_percentage} end else i.ingredientable.recipe_pl(recipe_percentage) end end end

Rails 3提交一个包含多个logging的表单

我是新手,所以这可能是一个基本的问题。 我正在尝试创build一个表单,用户可以一次创build3个logging。 我希望用户只需点击一次提交button。 我正在向“评论”模型提交名称,评论和评分。 目前,只有最后一条logging被input到数据库中。 <%= form_for([@user,@review]) do |f| %> <table> <tr> <td>Rank</td> <td>Name</td> <td>Comment</td> </tr> <tr> <td>1</td> <td><%= f.text_field :name %></td> <td><%= f.text_field :comment %></td> <%= f.hidden_field :rating, :value=> "5" %> </tr> <tr> <td>2</td> <td><%= f.text_field :name %></td> <td><%= f.text_field :comment %></td> <%= f.hidden_field :rating, :value=> "3" %> </tr> <tr> <td>3</td> <td><%= f.text_field :name […]

object_id赋值如何工作?

我正在玩Ruby的.object_id ,注意到在irb的几个连续会话中,我得到了相同的结果: false.object_id // 0 true.object_id // 2 nil.object_id // 4 100.object_id // 201 实际上,每个整数的object_id似乎都是((value * 2)+ 1)。 另一方面,在退出和重新运行irb之后,给定的string的object_id是绝不相同的。 这给我提出了几个问题: 有没有一个已知的scheme来确定某个object_id ? 其他人基本上是随机的 真,假,零的ID不是连续的。 有没有办法来问什么对象是由给定的ID代表? (我很好奇其他的一位数字和id是绑在一起的) 你可以(不是你应该)写混淆的Ruby,在那里你使用已知的对象ID来引用对象而不命名它们,比如“ID为201的对象+ ID为19的对象”表示“100 + 9”? 更新 使用安德鲁·格林的build议,我试图发现其他“低ID”的对象,但发现: 在这个序列中似乎没有更多的偶数对象 – id 6,8​​,10等没有指向任何东西。 正如我之前的实验所暗示的,所有的奇数ID都属于数字。 具体而言,id 1指向数字0,3指向1,5指向2,依此类推。

为什么Ruby文档中的方法前面有散列符号?

这是一直困扰着我的东西。 当我看到任何用文本打印的Ruby方法时,它通常显示为: Class#method 要么 #method 现在,我会使用: Class.method 为什么所有的Ruby方法都有一个磅符号? 有什么理由吗? 只是好奇。

ruby中“&:”运算符的function是什么?

可能重复: 在Ruby中map(&:name)是什么意思? 我遇到了一个代码片段,有以下几点 a.each_slice(2).map(&:reverse) 我不知道&:操作符的function。 这是如何工作的?

在控制器中运行rake任务

我想在我的控制器中运行一个rake任务。 有没有办法做到这一点?

如何从Ruby HEREDOC中删除主要的空白字符?

我正在尝试制作一个Ruby heredoc的问题。 它是从每行返回前导空白,即使我包括 – 运算符,这应该是压制所有领先的空白字符。 我的方法如下所示: def distinct_count <<-EOF \tSELECT \t CAST('#{name}' AS VARCHAR(30)) as COLUMN_NAME \t,COUNT(DISTINCT #{name}) AS DISTINCT_COUNT \tFROM #{table.call} EOF end 和我的输出如下所示: => " \tSELECT\n \t CAST('SRC_ACCT_NUM' AS VARCHAR(30)) as COLUMN_NAME\n \t,COUNT(DISTINCT SRC_ACCT_NUM) AS DISTINCT_COUNT\n \tFROM UD461.MGMT_REPORT_HNB\n" 这当然是正确的,在这个具体的例子中,除了第一个“之间的所有空间”和“t”之外,谁知道我在这里做错了什么?

了解Ruby中的私有方法

class Example private def example_test puts 'Hello' end end e = Example.new e.example_test 这当然是行不通的,因为我们指定了示例( e )的显式接收者实例,而这是针对“私有规则”的。 但是我不明白,为什么在Ruby中不能这样做: class Foo def public_m self.private_m # <= end private def private_m puts 'Hello' end end Foo.new.public_m public_m方法定义中的当前对象(即self )是Foo的实例。 那么为什么不允许? 要解决这个问题,我必须将self.private_m更改为private_m 。 但是为什么这个不一样,是不是self是public_m里的Foo的一个实例呢? 谁是裸字private_m电话的接收者? 不是那个self – 你实际上忽略了什么,因为Ruby会为你做(将自己调用private_m)? 我希望我没有太多混淆,对于Ruby我还是很新鲜的。 编辑:谢谢你的所有答案。 把它们放在一起,我终于能够明白(对于从未见过像Ruby这样的人的人来说并不那么明显): self本身可以是明确的和隐含的接受者,并且能够产生变化。 所以有两个规则,如果你想调用一个私有方法: self必须是隐式的接收方,而且这个self必须是当前类的一个实例(在这种情况下是例子 – 而且只有在内部实例方法定义的时候才发生,在这个方法执行期间)。 如果我错了,请纠正我。 class Example # […]

如何在Rails中设置默认值?

我试图find最好的方法来设置Rails中的对象的默认值。 我能想到的最好的方法是在控制器中的new方法中设置默认值。 有没有人有任何意见,如果这是可以接受的,或者有更好的方法来做到这一点?