1

複雑になってきているビューがありますが、これを別の方法で行う必要があるのでしょうか? 画像 (またはコード) は 1000 語に匹敵するので、ビューを次に示します...

    <% @orientation_by_date[date].each do |orientation| %>
      <% if current_user %>
        <% if orientation.active? %>
          <li><%= link_to orientation.class_time, new_orientation_registration_path(orientation) %>
              (<%= orientation.current_number_seats %>/<%= orientation.seats %>)</li>
        <% else %>
          <li><%= orientation.class_time %>(Class full)</li>
        <% end %>
        <%= link_to "VIEW", orientation_registrations_path(orientation) %></li>
      <% else %>
        <% if orientation.active? %>
          <li><%= link_to orientation.class_time, new_orientation_registration_path(orientation) %>
              (<%= orientation.current_number_seats %>/<%= orientation.seats %>)</li>
        <% elsif orientation.class_date.before Date.today %>
          <li><%= orientation.class_time %>(Class Closed)</li>
        <% end %>
        <% else %>
          <li><%= orientation.class_time %>(Class full)</li>
        <% end %>
      <% end %>
    <% end %>

ここに表示されているのは、スケジューリング アプリケーションのフロント エンドのカレンダー ビューです。さまざまな状態に基づいて、カレンダーの各日にさまざまな情報が表示されます。つまり、残りの座席数、「満席」、管理者向けのその他の情報などです。このロジックを何らかの方法でモデルまたはコントローラーに取り込む必要がありますか?

4

2 に答える 2

-1

<li>XPath を使用して、これらすべての項目の内容を特定する単体テストを記述します。

をつかみNokogiriNokogiri::HTML::BuilderRuby ですべてを記述します。

builder = Nokogiri::HTML::Builder.new do |doc|
   doc.ul {
     doc.li('data 1')
     doc.li('data 2') if oodles_of_poodles?
     doc.li('data 3')
   }
end

puts builder.to_html

これですべてが 1 つの言語になったので、2 つの言語を混在させるために必要なエスケープ トークンに常につまずくことなく、自由にリファクタリングできます。

于 2013-11-01T15:57:20.840 に答える