视图中显示的控制器方法中的循环结果

时间:2013-05-28 00:39:03

标签: ruby-on-rails ruby loops

我有一个控制器TestController

class TestController < ApplicationController

  def test_method
    for i in 1..5 do 
      <anything>
    end
  end
end

我有一个控制器的视图

[...]
<%= controller.test_method() %>
[...]

当我将自己的观点称为sais

1..5

任何人都可以告诉我为什么会这样吗?谢谢!

2 个答案:

答案 0 :(得分:3)

因为for i in 1..5返回1..5

如果你想对那个1..5做一些事情,那么你应该把方法作为帮助,在视图中做1..5,或者与视图层功能更密切相关的东西你是求。

IMO视图层操作不应该将 back 调用到首先呈现视图模板的控制器中;这很反直觉。最好的方法取决于你实际做了什么。


让我修改一下。我没有发现本质上回调到控制器错误,我只是不认为该调用的结果应该对渲染本身做的事情。抓住一个值,进行计算等等都不那么繁琐了,尽管我一般认为功能仍属于其他地方。

但是,我可能在这里成为少数。

答案 1 :(得分:1)

因为您告诉ERB使用<%= ... %>打印表达式的结果。

如果要在不打印结果的情况下执行表达式,请不要使用等号。

<% my_expression %>