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>,&nbsp;
      </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>,&nbsp;
      </li>
    <% end %>