我有以下代码
<% if items.any? %>
<ul class="level1">
<% items.each do |item| %>
<li class="item">
<a href="#"><%= item.text %></a>
</li>
<% end %>
</ul>
<% end %>
虽然这有效,但我想知道是否有办法让它更优雅。 if
然后each
不是很漂亮......
任何人都知道更优雅的语法?
答案 0 :(得分:3)
试试这个,based on
:
<% content_tag(:ul, class: 'level1') do %>
<% content_tag_for(:li, items, class: "item") do |item|
<%= link_to item.text, '#' %>
<% end %>
<% end if items.any? %>
5行,没有额外的部分,只有铁路助手。
答案 1 :(得分:1)
作为suggested by sawa,您可以使用Slim:
- if items.any?
ul.level1
- items.each do |item|
li.item
a href="#"
= item.text
或Haml:
- if items.any?
%ul.level1
- items.each do |item|
%li.item
%a{href: "#"}= item.text
两者都可以生成格式良好的HTML。
答案 2 :(得分:0)
这对我来说实际上看起来非常优雅,但是你可以这样做以使小更清洁:
<% if items.any? %>
<ul class="level1">
= render items
</ul>
<% end %>
然后将li
代码放在名为_items.html.erb
的部分代码中,如下所示:
<li class="item">
<a href="#"><%= item.text %></a>
</li>
答案 3 :(得分:0)
我会这样做:
if items.any?
content_tag(:ul, class: 'level1') do
items.each do |item|
concat content_tag(:li, class: 'item', item)
end
end
end