Ruby on rails 3 使用Rails计数器呈现集合中的部分
我正在呈现集合中的部分:Ruby on rails 3 使用Rails计数器呈现集合中的部分,ruby-on-rails-3,Ruby On Rails 3,我正在呈现集合中的部分: <%= render :partial => 'superlative', :collection => @profile.superlatives, :locals => {:superlative_count => @profile.superlatives.length} %> 我突然想到还有另一种方法。使用CSS伪元素,您只需在需要的地方插入逗号和“and”。这里的主要警告是,至少在某些浏览器中,如果有人复制并粘贴列表,伪元
<%= render :partial => 'superlative', :collection => @profile.superlatives, :locals => {:superlative_count => @profile.superlatives.length} %>
我突然想到还有另一种方法。使用CSS伪元素,您只需在需要的地方插入逗号和“and”。这里的主要警告是,至少在某些浏览器中,如果有人复制并粘贴列表,伪元素的内容将不会被包括在内(即,即使看到“foo、bar和baz”,他们也会得到“foo-bar-baz”) 假设你想在Ruby中使用它,那么你看到了什么间距问题?我假设你正在使用CSS将
转换成一个句子——你需要每个单词都在
中有什么特别的原因吗?你的代码看起来不错,但我可能会尝试通过移动那些逗号和'and'来调整它代码>:
<% if superlative_counter + 1 == superlative_count %>
<li class="superlative">
and <span title="<%= superlative.name %>"><%= superlative.body %></span>
</li>
<% else %>
<li class="superlative">
<span title="<%= superlative.name %>"><%= superlative.body %></span>,
</li>
<% end %>
及
,
…但我不确定这是否会对间距问题产生任何影响。只对其进行了一点编辑(删除了一个“并在逗号后添加了一个空格),但这确实起到了作用。再次感谢,@Jordan!顺便问一下,是否有地方解释了
\u计数器+1
或\u计数器%4
(正如我在这里的另一个问题中看到的)是什么意思?这只是数学。最高级计数器
只是集合中正在处理的项目数(如果是第一个项目,则得到0;如果是第二个项目,则得到1)因此,代码中的第一行只是测试它是否是最后一项。%
是模运算符,即余数:通常你会看到n%2==0
,这只是对均匀性的快速测试(n%2
是n/2
的余数,如果余数是0
,则n
是偶数)。您可以使用n%4==0
来突出显示每个第四项。在我编写自己的代码之前,我总是希望看到Rails如何做类似的事情。因为Rails已经将添加到一个数组中的句子
(尽管没有额外的标记或部分),您可以先查看该代码,看看您可以从中学习/使用什么:是的@Jordan帮助我使用了到_句子
,但它将所有内容呈现为一个句子。我需要呈现每个人的
,因此我的工具提示完好无损。
<% if superlative_counter + 1 == superlative_count %>
<li class="superlative"><span title="<%= superlative.name %>">
<%= "and #{superlative.body}" %>
</span></li>
<% else %>
<li class="superlative"><span title="<%= superlative.name %>">
<%= "#{superlative.body}," %>
</span></li>
<% end %>
<% if superlative_counter + 1 == superlative_count %>
<li class="superlative">
and <span title="<%= superlative.name %>"><%= superlative.body %></span>
</li>
<% else %>
<li class="superlative">
<span title="<%= superlative.name %>"><%= superlative.body %></span>,
</li>
<% end %>