0

我有一个控制器TestController

class TestController < ApplicationController

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

我对那个控制器有一个看法

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

当我打电话给我的观点时

1..5

谁能告诉我这是为什么?谢谢!!

4

2 回答 2

3

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

如果您想对此做一些事情,1..5那么您应该使该方法成为助手,1..5在视图中执行,或者与您正在寻找的视图层功能更密切相关的事情。

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


让我修改一下。我没有发现回调控制器本质上是错误的,我只是认为该调用的结果不应该对渲染本身进行处理。获取一个值、进行计算等不那么繁重,尽管我通常认为功能仍然属于其他地方。

不过,我可能在这里是少数。

于 2013-05-28T00:46:28.047 回答
1

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

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

<% my_expression %>
于 2013-05-28T00:49:31.543 回答