我有一个控制器TestController
class TestController < ApplicationController
def test_method
for i in 1..5 do
<anything>
end
end
end
我有一个控制器的视图
[...]
<%= controller.test_method() %>
[...]
当我将自己的观点称为sais
时1..5
任何人都可以告诉我为什么会这样吗?谢谢!
答案 0 :(得分:3)
因为for i in 1..5
返回1..5
。
如果你想对那个1..5
做一些事情,那么你应该把方法作为帮助,在视图中做1..5
,或者与视图层功能更密切相关的东西你是求。
IMO视图层操作不应该将 back 调用到首先呈现视图模板的控制器中;这很反直觉。最好的方法取决于你实际做了什么。
让我修改一下。我没有发现本质上回调到控制器错误,我只是不认为该调用的结果应该对渲染本身做的事情。抓住一个值,进行计算等等都不那么繁琐了,尽管我一般认为功能仍属于其他地方。
但是,我可能在这里成为少数。答案 1 :(得分:1)
因为您告诉ERB使用<%= ... %>
打印表达式的结果。
如果要在不打印结果的情况下执行表达式,请不要使用等号。
<% my_expression %>