Мне нужен совет по передовым методам для кода просмотра DRYing. У меня есть три класса (NewsItem, RssItem и BlogItem) в моем приложении, которые используют отдельные представления, но в них есть похожие части. Одна из частей такова:
<% 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) %>
<div><%= link_to "Edit", edit_user_blog_item_path(current_user, @item) %></div>
<% end %>
</footer>
<% end %>
Это почти равное для всех трех классов, поэтому я решил вывести его в какое-то отдельное место. И здесь я смущен: должен ли я использовать для этого частичный или вспомогательный метод? Я знаю, что помощники используются в основном для ветки кода ruby от HTML, но в этом случае помощник будет выглядеть так:
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
Итак, здесь почти нет кода HTML.
Не могли бы вы дать мне совет, какой метод лучше по вашему мнению и почему? Кроме того, существуют ли некоторые проблемы с производительностью в этих методах (например, множественная конкатенация строк или частая частичная загрузка может быть дорогостоящей)? (Это приложение довольно загружено)