我有一些像我这样的轨道部分:
<%= content_tag_for(:div, child) do %>
<%= child.var1 %><br>
<%= child.var2 unless child.var2.blank? %><br>
<%= "Some string" if child.is_stringy? %>
<% end %>
如下所示:
<%= render @object.children %>
如何使第二个和第三个换行符是可选的,而不必将整个块包裹在if / unless-then-end周围,如下所示:
<%= content_tag_for(:div, child) do %>
<%= child.var1 %><br>
<% unless child.var2.blank? then %>
<%= child.var2 %><br>
<% end %>
<% if child.is_stringy? then %>
<%= "Some string" if child.is_stringy? %><br>
<% end %>
<% end %>
我非常喜欢使用if / unless内联,以简洁明了。我可以这样做:
<%= child.var2 + tag(:br) unless child.var2.blank? %>
但是我必须修复转义标记,如下所示:
<%= raw(child.var2 + tag(:br)) unless child.var2.blank? %>
哪个有效,但让我对通过var2允许任意HTML感到有些不安。有什么建议吗?
答案 0 :(得分:0)
如果您经常这样做,您可以随时定义一个视图助手。像这样:
def break_after(value)
return unless value.present?
capture do
concat value
concat tag(:br)
end
end
然后......
<%= break_after child.var1 %>