#html #ruby-on-rails #views
#HTML #ruby-on-rails #Вид
Вопрос:
Должен ли я использовать content_tag helper для всех html-тегов при работе с Rails?
Является ли это способом Rails использовать content_tag даже для простых вещей, таких как теги заголовка?
<%= content_tag :h2, :class => "bla bla" do %>
Header
<% end %>
против.
<h2>Header</h2>
Очевидно, что простое использование простого html намного «проще» и «короче», но каков правильный способ Rails делать что-то?
Комментарии:
1. Есть веская причина (я думаю), почему вы хотели бы использовать этот помощник: когда вы пишете свой собственный помощник по тегам.
Ответ №1:
Использовать content_tag
, когда в этом нет необходимости, бесполезно. Нет необходимости использовать ERBisms для генерации статического HTML, поэтому не делайте этого. Если какой-то другой фрагмент кода определяет, какой тег использовать, то вы бы использовали content_tag
для создания этого тега.
Ответ №2:
Если вы спрашиваете способ rails сделать это, то он демонстративно использует ‘content_tag’, но использование tag_helpers имеет свои преимущества и недостатки
Лично для меня я могу видеть эти вещи (используя помощники rails вместо чистого HTML)
Преимущества
1 — Ваш код станет чище. (с меньшим количеством строк)
2 — У вас будет больше контроля над другими элементами. Пример: у вас могут быть свои собственные вспомогательные теги, такие как ‘big_text_box’, которые будут возвращать текстовое поле больше обычного, и вы можете использовать его по всему сайту
3 — Вы сможете динамически добавлять атрибуты, такие как class, id, во время выполнения
Недостатки
1 — Если у вас есть отдельный дизайнер (я имею в виду инженера пользовательского интерфейса), он / она будет сбит с толку используемым вами кодом. Поскольку это не чистый html
2 — Это медленнее, чем чистый html (но это даже не будет заметно, если в противном случае ваше приложение не будет чертовски крупным …)
Итак, вам решать, что использовать, лично я предпочитаю использовать вспомогательные теги rails, поскольку это делает меня более удобным
HTH
приветствия
sameera
Комментарии:
1. Спасибо Sameera, я ценю ваш вклад. Я очень надеюсь, что это станет основным приложением 🙂 Ха-ха! Я думаю, что сделаю микс, в зависимости от типа тега. Все, что вы сказали, имеет смысл.
Ответ №3:
Одним из полезных методов является «div_for», который чем-то похож на content_tag. Если вы обнаружите, что помечаете HTML-элементы данными, на которые вы можете ссылаться позже, «div_for» значительно упрощает вашу жизнь.
Допустим, у вас есть группа людей, показываемых на странице, и вам нужно обернуть каждого div с уникальным идентификатором, чтобы вы могли изменять эти элементы с помощью JS. Вручную и прямым HTML, который вам пришлось бы делать:
<% @people.each do |p| %>
<div id="person_<%= p.id %>"><%= p.name %></div>
<% end %>
Это стало бы надоедливым, если бы вы делали многое из этого с несколькими атрибутами (я обычно использую пользовательские идентификаторы, классы и некоторые атрибуты данных). Но, используя div_for, вы могли бы написать вышеупомянутое как:
<% @people.each do |p| %>
<%= div_for(p) do %><%= @person.name %><% end %>
<% end %>
Делает HTML немного легче для чтения, когда вещи становятся длинными и сложными. Я обнаружил, что это намного чище при большой работе с javascript.
http://apidock.com/rails/ActionView/Helpers/RecordTagHelper/div_for