如果前一个元素存在,则添加间隔文

时间:2012-06-10 12:33:47

标签: ruby-on-rails ruby-on-rails-3

使用Rails 3.这是一个前端设计问题。

目标:

Contact | Email | URL

show.html.erb:

<% if !@shop.contact.blank? %>
  <%= @shop.contact %>
<% end %>
<% if !@shop.email.blank? %>
  <%= @shop.email %>
<% end %>
<% if !@shop.url.blank? %>
  <%= link_to @shop.url, @shop.url, :target => "_blank" %>
<% end %>

只有当前一个元素和后一个元素有值时,我如何输入|?在目前阶段,如果没有值,则不输出任何内容。

非常感谢。

1 个答案:

答案 0 :(得分:1)

<% url = link_to(@shop.url, @shop.url, :target => "_blank") if @shop.url.present? %>
<%= [@shop.contact, @shop.email, url].select(&:present?).join(" | ") %>

这将创建一个包含所有元素的数组,选择具有值的元素(因为present?blank?相反)然后通过在它们之间放置一个管道来连接其余数组的每个元素

也就是说,如果你有更复杂的逻辑,你应该创建一个辅助方法。 ERB模板不适合复杂的逻辑。以上是接受的。