#ruby-on-rails #ruby #erb
#ruby-на-рельсах #рубин #эрб #ruby-on-rails #ruby #ошибка
Вопрос:
Я пытаюсь научиться писать более красивым шрифтом ERB. Как я мог бы отформатировать это, чтобы выглядеть красивее?
<% site.data.navigation.each { |item| %>
<a href="<%= item.link %>"
<% if page.url == item.link %>class="current"<% end %>>
<%= item.name %>
</a>
<% } %>
в частности, обертывание вокруг class="current"
просто кажется неуклюжим. Я ищу лучший способ, который не включает какой-либо вспомогательный метод. Есть ли что-нибудь почище?
Ответ №1:
Я делаю много изменений CSS через ERB. Мне нравится делать такие вещи, как:
<% site.data.navigation.each { |item| %>
<a href="<%= item.link %>"
class="<%= (page.url == item.link) ? 'current', '')%>" >
<%= item.name %>
</a>
<% } %>
Хотя я стараюсь не допускать, чтобы строки выходили за пределы экрана моего редактора, с HTML я не применяю это так сильно, потому что мне нравится видеть тег как одну строку:
<% site.data.navigation.each do |item| %>
<a href="<%= item.link %>" class="<%= (page.url == item.link) ? 'current', '')%>" >
<%= item.name %>
</a>
<% end %>
Для меня это показывает внешний цикл, затем тег, затем содержимое тега и, наконец, закрывающий тег. Также я не использую {} для многострочных циклов.
Комментарии:
1. Спасибо. я предполагаю, что троичный оператор немного чище, хотя, как вы показали, class = всегда будет существовать, просто в конечном итоге как class=»» , но я мог бы, конечно, поместить все это в троичный оператор.
2. Правда, я обычно использую что-то подобное для работы в Bootstrap. Поэтому мой троичный оператор переключает его между такими понятиями, как «успех» и «опасность», чтобы изменить цвета. Class= ничего не повредит, поскольку вы все равно не применяете к нему класс.
3. Мое главное эмпирическое правило с ERB заключается в том, что код ERB всегда должен выделяться из HTML, чтобы мне и разработчику, специализирующемуся на HTML, было легко читать. Также я стараюсь использовать
link_to
везде, где это возможно, но иногда это попадает на странную территорию html_escape.4. имеет смысл. у меня нет
link_to
здесь.