【问题标题】:rails render muliple partials in a single invocationrails 在一次调用中渲染多个部分
【发布时间】:2013-12-05 04:20:07
【问题描述】:

有人可以建议我一个很好的小方法来在一个方法中返回多个东西并将它们全部呈现为视图中的不同部分吗?

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

上面的代码只会渲染一部分。

如果上述所有条件都为真,我正在尝试找出一种方法来返回所有部分

【问题讨论】:

  • 为什么不能像现在一样返回一个数组数组,然后在视图中迭代它,为每个数组调用渲染?
  • 我试图避免视图中的任何逻辑。但如果这是我可以尝试的唯一方法

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


【解决方案1】:
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 浏览它们。

【讨论】:

    【解决方案2】:

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

    在 Erb 中:

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

    【讨论】:

      猜你喜欢
      • 2018-08-12
      • 1970-01-01
      • 1970-01-01
      • 2017-05-03
      • 1970-01-01
      • 2013-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多