我的代码
<%= @invite.host.name %><br />
<%= @invite.host.title %><br />
如果没有名称或标题,我不想呈现<br />
。
我尝试了
<%= "#{@invite.host.name} <br />" || '' %>
但是那没有用。
我宁愿不要执行if
块。是否有一种简洁的单行方式来实现我想要做的事情?
答案 0 :(得分:2)
在ApplicationHelper
中添加一个辅助方法:
def with_break(content)
return nil unless content
(content + content_tag(:br)).html_safe
end
然后在视图中执行:
<%= with_break @invite.host.name %>
<%= with_break @invite.host.title %>
答案 1 :(得分:0)
它不起作用,因为您提供的字符串永远不会为nil
。如果您需要一个衬纸,则可以执行以下操作(呈现HTML标签需要.html_safe
)
<%= "#{@invite.host.name} <br>".html_safe if @invite.host.name.present? %>
或者,如果您需要更简单的方法,可以将<br>
标记替换为<div>
,这将产生相同的效果:
<div><%= @invite.host.name %></div>
<div><%= @invite.host.title %></div>