Ruby on rails 如何将类添加到渲染:partial=>@每第四项收集?
假设我有16个结果 在每4个项目上,我需要添加一个类“无边距”(因为左侧的每个项目都需要右边距来创建间距,但最后一个项目这样做会破坏布局,因此需要这样做) 最好的方法是什么 我现在很喜欢它Ruby on rails 如何将类添加到渲染:partial=>@每第四项收集?,ruby-on-rails,Ruby On Rails,假设我有16个结果 在每4个项目上,我需要添加一个类“无边距”(因为左侧的每个项目都需要右边距来创建间距,但最后一个项目这样做会破坏布局,因此需要这样做) 最好的方法是什么 我现在很喜欢它 render :partial => @collection _collection.html.haml stuff 我是否可以在部分中加入一些东西来解决这个问题,或者它必须在外部发生 谢谢。您可以使用cycle()来执行以下操作: 不确定它在haml中是否会有所不同,但在erb模板中,我会这样做
render :partial => @collection
_collection.html.haml
stuff
我是否可以在部分中加入一些东西来解决这个问题,或者它必须在外部发生
谢谢。您可以使用cycle()来执行以下操作: 不确定它在haml中是否会有所不同,但在erb模板中,我会这样做:
<% @collection.each do |item| %>
<tr class="<%= cycle('yes-margin', 'yes-margin', 'yes-margin', 'no-margin' %>">
...
</tr>
<% end %>
...
我倾向于使用可枚举
中的每个带有索引的方法
# app/views/questions/index.html.haml
- @questions.each_with_index do |question, index|
%li{ :class => no_margin(index) }
= render :partial => 'question', :object => question
您的助手可能看起来像这样
# app/helpers/questions_helper.rb
def no_margin(index)
index % 4 == 0 ? 'no-margin' : 'margin'
end
渲染集合时,Rails会创建隐藏索引。在这种情况下,您可以将模块与索引组合以获得结果
# _partial.html.erb
<div class="<% if (partial_counter % 4) == 0 %>no-margin<% end %>">
...
</div>
# action
<%= render => "partial", :collection => @collection %>
#_partial.html.erb
...
#行动
“部分”,:collection=>@collection%>
更好的是,将逻辑提取到助手方法中
注意。计数器的名称是\u counter
问题是计数器从0开始…因此,尝试每4个项目添加一些内容实际上不起作用。它将其添加到第1、第5、第9等。