我有一个场景,我从视图中调用一个Controller方法,它返回一个页面数组,可以是nil或必须有values.i需要在for循环中迭代该数组以生成动态在我的view.pls帮助中列出
答案 0 :(得分:0)
在控制器中实现逻辑通常不应该是move logic into the corresponding model。
但如果您真的想要,可以使用controller
变量从您的视图中访问实际的控制器。
示例:
<p>
Now we're printing out the result of the some_method:
<%= controller.some_method.inspect %>
</p>
迭代返回的值很简单:
<ul>
<% controller.some_method.each do |item| -%>
<li>item.inspect</li>
<% end -%>
</ul>
控制器中方法的可见性可能不公开,因此您可能需要使用Object#send
方法。
<%= controller.send(:my_protected_method).inspect %>
要处理nil
响应,我会在ApplicationHelper
类中创建一个帮助方法:
def my_method
(controller.my_method || [])
end
然后在视图中:
<% my_method.each do |item| -%>
<%= item.inspect %>
<% end %->