Ruby on rails 助手功能在控制台中工作,但在视图中失败

Ruby on rails 助手功能在控制台中工作,但在视图中失败,ruby-on-rails,helper,Ruby On Rails,Helper,我在ApplicationHelper类中具有以下帮助函数: def convert_to_range(n) [ (0..49), (50..99)].each do |range| if range.cover? (n) return "#{range.min}+" end end end 如果我将此功能加载到console,它将工作: convert_to_range 66 # 50+ 然而,当我从视图调用它时,它会返

我在ApplicationHelper类中具有以下帮助函数:

  def convert_to_range(n)
    [ (0..49), (50..99)].each do |range|
      if range.cover? (n)
        return "#{range.min}+"
      end
    end
  end
如果我将此功能加载到console,它将工作:

 convert_to_range 66 
 # 50+
然而,当我从视图调用它时,它会返回

[0..49, 50..99]

这里发生了什么?我如何修复它?

您从视图中传递的数字必须超出您传递的范围。然后,默认行为是返回方法的最后一行,但由于唯一的语句是for,因此它返回计算结果,即两个范围对象的数组

irb(main):013:0> convert_to_range 45
=> "0+"
irb(main):016:0> convert_to_range 99
=> "50+"
irb(main):014:0> convert_to_range 100
=> [0..49, 50..99]
如果添加一个return语句来表示错误,则将得到该语句而不是数组:

def convert_to_range(n)
    [(0..49), (50..99)].each do |range|
      if range.cover? (n)
        return "#{range.min}+"
      end
    end

    false
end

irb(main):025:0> convert_to_range  999
=> false

或者您也可以选择引发异常

视图中是否有相同的数字?如果
n
不在范围内,您希望返回什么?