以下代码很快成为我的rails应用程序中的常见主题。在我的视图中,我有一堆处理空数据的条件,以及管理网格的推拉。这只会随着我开始添加其他3个状态而增长。我的问题是这个。在视图或控制器中优雅地管理网格的最佳方法是什么,以便我的观点不会因条件而变得越来越臃肿?
<% 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 :(得分:0)
我认为你应该使用switch case语句来管理多个条件。
@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 %>