0

有人可以建議我一個很好的方法來返回方法中的多個東西,並將它們全部渲染爲視圖中的不同部分?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 

上面的代碼將只呈現一個部分。

我試圖找出一個辦法,如果上述所有條件都滿足

+0

爲什麼你不能返回一個數組數組,然後在你的視圖中迭代它,像現在這樣爲每個數組調用render? – Chandranshu

+0

我試圖避免在視圖中的任何一種邏輯。但如果這是我可以嘗試的唯一方法 – newbie

回答

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來通過它們。

0

試圖返回的參數數組,你再傳遞到渲染調用,將返回所有的諧音:

在厄爾布:

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