格式化索引项目不同

时间:2011-10-22 00:53:19

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1

我有一个相当常见的索引视图,但我想格式化第一个项目与其他项目不同。如何区分第一个项目与其他项目,以便为第一个链接而不是<h1>使用<h5>标记?

<% @links.each do |link| %>
  <% if link.points == 0 then @points = "?" else @points = link.points%>
  <% end %>
    <p>
      <h5> 
        <%= link_to '+', up_link_url(link), :method => :put, :class => "label success" %> 
        <%= @points %> 
        <%= link_to '-', down_link_url(link), :method => :put, :class => "label important" %> &nbsp; &nbsp; &nbsp;
        <%= link_to strip_tags(link.title), link %>
      </h5>
    </p>
<% end %>

2 个答案:

答案 0 :(得分:2)

怎么样?

<% @links.each_with_index do |link, index| %>
  <% if link.points == 0 then @points = "?" else @points = link.points%>
  <% end %>
    <p>
      <% if index == 0 then %> <h1> <% else %> <h5> <% end %>
        <%= link_to '+', up_link_url(link), :method => :put, :class => "label success" %>
        <%= @points %>
        <%= link_to '-', down_link_url(link), :method => :put, :class => "label important" %> &nbsp; &nbsp; &nbsp;
        <%= link_to strip_tags(link.title), link %>
      <% if index == 0 then %> </h1> <% else %> </h5> <% end %>
    </p>
<% end %>

答案 1 :(得分:2)

有很多选项,但我有一个部分开头的链接,并将大部分内容保留在主线模板之外。

您可以使用each_with_index并使用部分决定使用哪个标头标记,或者将索引链接到标题级别(例如使用地图,但可能是过度杀伤)。

或者您可以手动渲染第一个项目(@links.first)(再次使用部分,传入标题标记字符串)并通过循环执行其余项目。我实际上倾向于这个,因为它保持主线模板非常干净,但非常沟通,你不必深入了解模板,看看为什么事情的呈现方式不同。

在一个不相关的说明中,从语义角度来看,从h1跳到h5没有插入标题有点奇怪。