Это означает, что вы можете обернуть код Ruby внутри тегов <%%>, как обычно. К сожалению, я не нашел способа удалить пробелы перед начальным тегом <%.

я есть шаблон ERB для отправки электронной почты.

Name: <%= @user.name %>
<% if @user.phone.present? %>
Phone: <%= @user.phone %>
<% end %>
Address: <%= @user.address %>

Я пытаюсь удалить пустую строку междуName а такжеAddress когдаPhone пустой.

Возвращенный результат

Name: John Miller 

Address: X124 Dummy Lane, Dummy City, CA

Ожидаемый результат

Name: John Miller 
Address: X124 Dummy Lane, Dummy City, CA

Я пытался использовать<%--%> теги (чтобы удалить завершающую новую строку) без какого-либо успеха.

Name: <%= @user.name %>
<%- if @user.phone.present? -%>
Phone: <%= @user.phone %>
<%- end -%>
Address: <%= @user.address -%>

Как мне обойти эту проблему?

PS: Я на Rails 2.3.8.

Примечание 1

Прямо сейчас я работаю над этой проблемой, используя рубиновые хакеры.

Вспомогательный метод:

def display_fields(names, user)
  names.collect do |name| 
    value = user.send(name)
    "#{name}: #{value}" unless value.blank?
  end.compact.join("\n")
end

Посмотреть код

<%= display_fields(["Name", "Phone", "Address"], @user) %>

Но это выглядит довольно неуклюже для меня. Мне интересно знать, смог ли кто-нибудь получить<%--%> работая в шаблонах представления ERB.

Ответы на вопрос(6)

Ваш ответ на вопрос