0

I have a scenario where i am calling a Controller method from the view,that returns an array of pages,which can be either nil or must be having values.i need to iterate that array in a for loop to generate a dynamic list in my view.pls help

4

1 回答 1

0

在控制器中实现逻辑通常不是一个好主意,您应该将逻辑移动到相应的模型中。

但是,如果您真的想要,您可以使用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 %->
于 2012-07-30T11:44:23.687 回答