我在集合中渲染部分:
<%= render :partial => 'superlative', :collection => @profile.superlatives, :locals => {:superlative_count => @profile.superlatives.length} %>
这是部分:
<li class="superlative"><span title="<%= superlative.name %>">
<%= superlative.body %>
</span></li>
我想渲染集合,以便:
and
这样整个集合就像这样:身体,身体,身体和身体
我有一些使用下面的代码,但无法正确的间距。有人可以帮忙吗?也许还有一种更简单的方法吗?谢谢!
<% 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 %>
答案 0 :(得分:1)
我觉得有另一种方法可以做到这一点。使用CSS伪元素,您只需插入逗号和“和”即可。 Take a look in this fiddle。这里的主要警告是,至少在某些浏览器中,如果有人复制并粘贴列表,则不会包含伪元素的内容(即使他们看到“foo bar baz”,即使他们看到“foo,bar”和巴兹。“
假设您想在Ruby中执行此操作,您看到的间距问题是什么?我假设您使用CSS将<ul>
转换为句子 - 您是否需要将每个单词放在<li>
内?你的代码看起来不错,但我可能会想要通过移动那些逗号和'并在<span>s
之外来调整它:
<% 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 %>
...但我不确定这会对间距问题产生任何影响。