2014-11-10 4 views
0

Код ниже быстро становится общей темой в моем приложении rails. На мой взгляд, у меня есть куча условий для обработки пустых данных, а также управление нажатием и отключением моей сетки. Это будет расти только тогда, когда я начну добавлять 3 других статуса. Мои вопросы таковы. Каков наилучший способ элегантно управлять сеткой или в представлении или контроллере, чтобы мои взгляды не становились все более раздутыми с условиями?Conditional Rails Views

<% if @jobs.where(status: 'published').size == 0 %> 
    <div class="row"> 
    <div class="large-12 columns"> 
    </div> 
    </div> 
<% end %> 
<% if @jobs.where(status: 'published').size == 1 %> 
    <div class="row"> 
    <div class="large-4 push-8 columns"> 

    </div> 
    </div> 
<% elsif @jobs.where(status: 'published').size == 2 %> 
    <div class="row"> 
    <div class="large-4 push-4 columns"> 
    </div> 
    </div> 
<% else %> 
    <% @jobs.in_groups_of(3, false) do |row| %> 
    <div class="row"> 
     <% for job in row %> 
     <div class="large-4 medium-4 columns"> 

     </div> 
     <% end %> 
    </div> 
    <% end %> 
<% end %> 
+0

Здесь вы должны начать представлять докладчиков – apneadiving

+0

@apneadiving Спасибо за комментарий! Можете ли вы подробнее рассказать? –

+0

проверить это: https://github.com/drapergem/draper – apneadiving

ответ

0

Я думаю, вы должны использовать оператор case switch для управления несколькими условиями.

@status = @jobs.where(status: 'published').size 

<% case @status %> 
<% when 0 %> 
    <div class="row"> 
    <div class="large-12 columns"> 
    </div> 
    </div> 
<% when 1 %> 
    <div class="row"> 
    <div class="large-4 push-8 columns"> 
    </div> 
    </div> 
<% when 2 %> 
    <div class="row"> 
    <div class="large-4 push-4 columns"> 
    </div> 
    </div> 
<% else %> 
    <% @published_jobs.in_groups_of(3, false) do |row| %> 
    <div class="row"> 
     <% for job in row %> 
     <div class="large-4 medium-4 columns"> 

     </div> 
     <% end %> 
    </div> 
    <% end %> 

<% end %> 
+0

Спасибо за сообщение. Я просмотрел комментарии @apneadiving, используя презентаторов, и я думаю, что это более элегантное решение для моей проблемы. Это также значительно уменьшает зрение. –