Как стать автором
Обновить

Комментарии 6

естественно, опрос относится к тем людям, которые используют для HTML-шаблонизации embedded/inline средства языка (т.е. к примеру <% %> или <? ?>).
сам опрос возник на основе следующего недавнего диспута с коллегами:
есть очень похожий код в html.erb для отображения классов RssItem, BlogItem, NewsItem, пример:
<% if current_user %>
<footer>
<%= marks_bar(@item) %>
<%= favorite_button(@item, "blog_item") || delete_from_favorite_button(@item, "blog_item") %>
<%= share_button(@item) %>
<% if current_user.is_mine?(@item) %>
<%= link_to "Edit", edit_user_blog_item_path(current_user, @item) %>
<% end %>
</footer>
<% end %>

В хелпере оно было бы похоже на что-то вроде
def toolbar_for(item, type_str, edit_path)
  if current_user
    content_tag(:footer) do |b|
      marks_bar(item).to_s <<
      (delete_from_favorite_button(item, type_str) || favorite_button(@item, type_str)).to_s <<
      share_button(@item).to_s <<
      (content_tag(:div) { link_to("Edit", edit_path) } if current_user.is_mine?(@item)).to_s
    end
  end
end

Куда лучше это вынести, в partial или helper, до сих пор решить не можем.
В Django я бы сделал inclusion_tag. Т.е. хэлпер, результат работы которого рендирится в связанный шаблон.

Если бы со временем логика слишком усложнилась, можно было бы сделать обычный тег, при этом не меняя ничего в шаблонах.
Вот для таких штук и удобно использовать интерпретаторы типа haml…

Лично мой подход такой: если код должен вернуть больше одного тега в результате — нужен партиал.
haml — вещь исключительно на любителя. и в общем-то проблему чистоты кода он не решает, только упрощает читабельность, и то тоже вопрос субъективный.
Я тоже так считал, пока не стал им пользоваться.
Рисую веб-контролы периодически, получается несколько удобнее и прозрачнее, чем классический PartialView.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории