使用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等更正的标签和标题。谢谢。我觉得很好看!嗯,这是一行短,但一个额外的文件。。。不过,谢谢你的建议:)哈,是的,就像我说的,你已经拥有的足够优雅了。当您只需要迭代/添加simpleli
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