Помощник Rails content_tag для простых вещей?

#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