2013-02-22 36 views
0

理想情況下,可重複使用的代碼,我們可以將其放入一個分隔的部分,並可以從不同的動作調用它。現在哪些代碼我應該放入軌道中的部分

,如果我的parial _list.html.haml文件有代碼

#betting_list 
    %table.table 
    %tr 
    %th{:align => "left"}="Start time" 
    %th{:align => "left"}="Fixture" 
    %th{:align => "left"}="Won" 
    %th{:align => "left"}="Draw" 
    %th{:align => "left"}="Lost" 
    %th{:align => "left"}="Amount" 
    - @upcoming_event.each do |event| 
    %tr{:class => cycle('even', 'odd')} 
     %td=event.start_at.strftime("%b %d %H:%M") 
     %td=link_to event.name, event 
     - event.outcomes.each do |outcome| 
     - if outcome.label =="Won" 
      %td=outcome.odds 
     - if outcome.label =="Draw" 
      %td=outcome.odds 
     - if outcome.label =="Lost" 
      %td=outcome.odds 
     %td=event.bets.count 
= paginate(@upcoming_event) 

我們應該始終保持一個數據行或循環中不同部分或?。我處於分裂狀態。我不需要重複使用該循環部分來重用。

是可以重構這樣的代碼?

+0

我不會讓你的'如果outcome.label ==' – apneadiving 2013-02-22 12:40:40

回答

1

您可以在新的部分中更好地保​​持循環。

另外我看到多個IF,有點混亂。

你可以做到這一點

- if (["Won","Lost","Draw"].include? outcome.label) 
    %td=outcome.odds 
1

至於不同的諧音,這一切都取決於重用或可讀性。正確命名的部分也可以幫助解釋維護原因,特別是如果沒有評論。

Case語句使其更具可讀性。但這只是一個意見。

case outcome.label 
when "Won", "Lost", "Draw" 
    %td=outcome.odds 
end 
相關問題