rails在一次调用中渲染多个部分
问题描述:
有人可以建议我一个很好的方法来返回方法中的多个东西,并将它们全部渲染为视图中的不同部分?rails在一次调用中渲染多个部分
def tasks
if task1.present?
['task1_summary', task1: task1]
if task2.present?
['task2_programs', task2: task2]
if task3.present?
['task3', program: task3]
else
[empty: '']
end
end
笔者认为:
= render *tasks
上面的代码将只呈现一个部分。
我试图找出一个办法,如果上述所有条件都满足
答
def tasks
tasks_array = []
tasks_array << ['task1_summary', task1: task1] if task1.present?
tasks_array << ['task2_programs', task2: task2] if task2.present?
tasks_array << ['task3', program: task3] if task3.present?
end
将返回你的任务组。你可以在你看来用.each
来通过它们。
答
试图返回的参数数组,你再传递到渲染调用,将返回所有的谐音:
在厄尔布:
<% tasks.each do |task| %>
<%= render task %>
<% end %>
为什么你不能返回一个数组数组,然后在你的视图中迭代它,像现在这样为每个数组调用render? – Chandranshu
我试图避免在视图中的任何一种逻辑。但如果这是我可以尝试的唯一方法 – newbie