DRYing vista de rieles: parcial vs auxiliar [duplicado]

Esta pregunta ya tiene una respuesta aquí:

Cuando usar Helpers en lugar de Parciales 6 respuestas

Necesito un consejo sobre las mejores prácticas para SECAR el código de vista. Tengo tres clases (NewsItem, RssItem y BlogItem) en mi aplicación, que usan vistas separadas, pero tienen partes similares en ellas. Una de las partes es tal:

<% 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 %>

Es casi igual para las tres clases, así que decidí llevarlo a otro lugar. Y aquí estoy confundido: ¿debería usar un método parcial o auxiliar para ello? Sé que los ayudantes se usan principalmente para separar el código ruby del HTML, pero en este caso el ayudante se verá así:

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

Por lo tanto, casi no hay código HTML aquí.

¿Podría darme un consejo, qué método es mejor en su opinión y por qué? Además, ¿hay algunos problemas de rendimiento en estos métodos (por ejemplo, la concatenación de cadenas múltiples o la carga parcial frecuente pueden ser costosas)? (Esta aplicación está bastante cargada)

Respuestas a la pregunta(2)

Su respuesta a la pregunta