erb, если условия с переменными окружения

Я пытаюсь сделать что-то подобное для приложения sinatra с использованием erb. Я долго боролся с этим, и у меня возникли проблемы с поиском хорошей документации для erb. Мы будем очень благодарны за любые мысли о том, как реализовать рабочую версию этого.

<% if employee['filename'] == nil %>
                <img width="70" height="70" src="#{ENV['no_image_url']}">
                <% else %>
                <img width="70" height="70" data-src="#{ENV['employee_image']" src="#{ENV['employee_image']">
                end

person Josh Hunter    schedule 26.03.2015    source источник
comment
Думаю, вы просто забыли закончить оператор if. <% end %>   -  person vgoff    schedule 27.03.2015
comment
@vgoff Будет ли строковая интерполяция работать для его атрибутов src, или ему также придется использовать там теги erb (<%= %>)?   -  person dwenzel    schedule 27.03.2015
comment
Я бы, вероятно, вообще не боролся с переменными окружения в представлении, кроме как в самом приложении Sinatra. Затем используйте yield для представления результата. Я обращался только к «выражению if». Другая функциональность - это то, что он делает, это, кажется, здесь не имеет смысла, но у меня нет никаких указаний на то, что он с этим делает, возможно, это учебный код, и он предназначен для показа в таком виде. является. Другими словами, я затронул только часть ERB, а не то, как она взаимодействует с фреймворком Sinatra.   -  person vgoff    schedule 27.03.2015
comment
Однако, чтобы ответить на ваш вопрос, да, HTML представит это в том виде, в котором он представлен. Таким образом, необходимо использовать теги erb, чтобы получить это для оценки. Однако это не выход, значение должно определяться в логике программы, а не в представлении.   -  person vgoff    schedule 27.03.2015


Ответы (1)


Просто забываем закрыть наш оператор if.

<% if employee['filename'].nil? %>
  <img width="70" height="70" src="#{ENV['no_image_url']}">
<% else %>
  <img width="70" height="70" data-src="#{ENV['employee_image']" src="#{ENV['employee_image']">
<% end %>

Однако это действительно не похоже на хороший дизайн. Создайте код изображения для визуализации в коде вашего приложения, а затем просто визуализируйте этот результат в вашем представлении. Тогда у вас вообще не будет условного кода в вашем представлении, вы просто визуализируете результат.

person vgoff    schedule 26.03.2015