Ruby on rails 这种简单的方法不需要';我不能在Rails助手中工作

Ruby on rails 这种简单的方法不需要';我不能在Rails助手中工作,ruby-on-rails,Ruby On Rails,嘿,伙计们 我不熟悉rails。通过编写以下代码,我正在练习今天学到的关于rails helper和ruby块的知识: 在/apps/helpers/home_helper.rb中 module HomeHelper def each(from, to, by) x = from while x <= to yield x x = x + by end end end 模块HomeHelper 每个def(从、到、由) x=从 而x

嘿,伙计们 我不熟悉rails。通过编写以下代码,我正在练习今天学到的关于rails helper和ruby块的知识:

在/apps/helpers/home_helper.rb中

module HomeHelper
  def each(from, to, by)
    x = from
    while x <= to
      yield x
      x = x + by
    end
  end
end
模块HomeHelper
每个def(从、到、由)
x=从

而x则不需要编写该方法。改为这样做:

<% [2, 16, 3].each do |n| %>
 <p><%= n %></p>
<% end %>


原因是,方法“each”1)已经是任何可枚举对象上的Ruby方法,2)重新发明这样一个基本的轮子是一种糟糕的做法。

正如其他人所说,对于您试图实现的内置Ruby,有更好的方法。具体而言,步骤法:

2.step(16, 3) { |i| puts i }

另外请注意,您的
index.html.erb
文件应该位于
apps/views/home

中,每个
都是保留的。我假设您正在尝试覆盖此默认值?@Sam我不打算覆盖默认值,我只是编写了一个简单的代码,可以测试我今天学到的有关block的内容,我将方法名称更改为myeach,但它在网页中仍然不存在。@Sam:
每个
在ruby中都不是保留字。这是一种可枚举的方法,但是你可以自由地实现你自己的方法。你发现你的例子有什么问题吗?@nathanvda我知道问题出在哪里,我应该使用三行样式的do end block,但我仍然不知道为什么,所以我问这个问题,他并没有试图在这些整数的数组上实现,实际上这并没有回答imho的问题。
2.step(16, 3) { |i| puts i }