我有一个相当常见的索引视图,但我想格式化第一个项目与其他项目不同。如何区分第一个项目与其他项目,以便为第一个链接而不是<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" %>
<%= link_to strip_tags(link.title), link %>
</h5>
</p>
<% end %>
答案 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" %>
<%= 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
没有插入标题有点奇怪。