rails在单个调用中呈现多个部分

时间:2013-11-20 22:26:43

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.2 ruby-on-rails-3.1

有人可以建议我在方法中返回多个东西并在视图中将它们全部渲染为不同的部分吗?

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

上面的代码只会呈现一个部分。

如果所有上述条件都成立,我试图找出一种可以返回所有部分的方法

2 个答案:

答案 0 :(得分:0)

尝试返回一个参数数组,然后将这些参数传递给渲染调用:

在Erb:

<% tasks.each do |task| %>
  <%= render task %>
<% end %>

答案 1 :(得分:0)

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浏览它们。