Rails:简洁地打印变量名和<br/>标签(如果存在)

时间:2018-08-22 04:40:00

标签: ruby-on-rails

我的代码

<%= @invite.host.name %><br />
<%= @invite.host.title %><br />

如果没有名称或标题,我不想呈现<br />

我尝试了

<%= "#{@invite.host.name} <br />" || '' %>

但是那没有用。

我宁愿不要执行if块。是否有一种简洁的单行方式来实现我想要做的事情?

2 个答案:

答案 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>