0

理想的には、再利用可能で、septate パーシャルに入れ、さまざまなアクションから呼び出すことができるコードです。

さて、私の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)

データ行またはループを常に別のパーシャルまたはに保持する必要がありますか? . 私はデリマです。そのループ部分を再利用する必要はありません。

そのようなコードをリファクタリングすることは可能ですか?

4

2 に答える 2

1

新しいパーシャルでループをより良く保つことができます。

また、複数の IF が表示され、少し混乱します。

あなたはこれを行うことができます

- if (["Won","Lost","Draw"].include? outcome.label)
    %td=outcome.odds 
于 2013-02-22T12:41:07.890 に答える
1

さまざまなパーシャルについては、すべて再利用または可読性に依存します。適切な名前のパーシャルは、特にコメントがない場合、メンテナンスの理由で何が起こっているのかを説明するのにも役立ちます。

Case ステートメントを使用すると、もう少し読みやすくなります。しかし、それは単なる意見です。

case outcome.label
when "Won", "Lost", "Draw"
  %td=outcome.odds
end
于 2013-02-22T21:27:34.863 に答える