使用Ruby+;雇员再培训局

使用Ruby+;雇员再培训局,ruby,erb,Ruby,Erb,我有以下代码 <% if items.any? %> <ul class="level1"> <% items.each do |item| %> <li class="item"> <a href="#"><%= item.text %></a> </li> <% end %

我有以下代码

<% if items.any? %>
    <ul class="level1">
        <% items.each do |item| %>
            <li class="item">
                <a href="#"><%= item.text %></a>
            </li>
        <% end %>
    </ul>   
<% end %>

虽然这样做有效,但我想知道是否有办法让它更优雅。如果然后每个都不是很漂亮


有人知道一种更优雅的语法吗?

在我看来,它实际上已经足够优雅了,但您可以这样做以使其更简洁:

试试这个,:



我会这样说:

if items.any?
  content_tag(:ul, class: 'level1') do
    items.each do |item|
      concat content_tag(:li, class: 'item', item)
    end
  end
end
如图所示,您可以使用:

或:


两者都能生成格式良好的HTML。

看起来像erb,而不是HTML。有haml、slim等更正的标签和标题。谢谢。我觉得很好看!嗯,这是一行短,但一个额外的文件。。。不过,谢谢你的建议:)哈,是的,就像我说的,你已经拥有的足够优雅了。当您只需要迭代/添加simple
li
s时,9行就相当干净了-驻留,这只是另一个打印相同的命令。它与同义词方法的说明基本相同。@Dbugger您到底在寻找什么?也许我们不明白“优雅”对你意味着什么。您仍然必须告诉计算机您希望它做什么。:-)嗯,我不想因为这个改变我的整个模板引擎…:)但是谢谢你的建议只有两个级别。。。这是目前为止最好的一个:)我个人认为
if项的可读性更好。有吗?
包装块,但毫无疑问这是超级简洁的。很不错的!
<li class="item">
  <a href="#"><%= item.text %></a>
</li>
<% content_tag(:ul, class: 'level1') do %>
   <% content_tag_for(:li, items, class: "item") do |item|
      <%= link_to item.text, '#' %>
   <% end %>
<% end if items.any? %>   
if items.any?
  content_tag(:ul, class: 'level1') do
    items.each do |item|
      concat content_tag(:li, class: 'item', item)
    end
  end
end
- if items.any?
  ul.level1
    - items.each do |item|
      li.item
        a href="#"
          = item.text
- if items.any?
  %ul.level1
    - items.each do |item|
      %li.item
        %a{href: "#"}= item.text