这个简单的方法在Rails助手中不起作用

时间:2011-03-01 03:07:00

标签: ruby-on-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

在/apps/views/index.html.erb

<p><%= each(2,16,3){|x| x } %></p>

但是在我运行服务器之后,导航到localhost:3000 / home / index就没有了。

有人告诉我,我做错了什么?感谢

2 个答案:

答案 0 :(得分:2)

正如其他人所说的那样,有更好的方法可以帮助您实现内置于ruby中的功能。特别是#step方法:

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

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

答案 1 :(得分:-1)

您不需要编写该方法。这样做:

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

原因是方法'each'1)已经是任何Enumerable对象上的Ruby方法,2)重新发明这样一个基本轮子是不好的做法。