How View Partials Have Saved Me So Much Time

Since having made so many partials to may app upon creation, it has saved me so much time in updating it, that I felt I should take a few minutes that I gained to write a post on how useful it is, so maybe you will utilize this super easy and handy tool.

On my Recipe App that I made on Ruby on Rails, anything that can be used in multiple places were rendered as a partial.

These same lines were rendered on user show pages, recipe show pages, and index pages. In fact my smallest partial was simply an image of a heart!

Aside from all the work in getting my app to work, and function correctly, have links with proper routes and forms that would submit, I would only have to worry about it once, because it was only in my views once — they were using the same partial.

And when I later implemented JavaScript and Jquery and hijacked links and forms, when I did it in one place, it worked on the whole site. It’s tough enough working with AJAX requests and JQuery/Javascript functions, I don’t need the extra work by having to enter many views to make sure classes and ID’s are always correct.

Here is an example of a partial that was used:

Recipe#Show

1
2
3
4
5
6
7
8
9
<%= render 'recipes/recipe_details', recipe: @recipe %>
<div>
<%= render 'comments/list_comments', comments: @recipe.comments if @recipe.comments %>
</div>
<br />
<div id="comments">
Add your comment below! (You must be signed in)
<%= render 'comments/form', comment: @recipe.comments.new, recipe: @recipe%>
</div>

We’ll follow the Recipe Details to recipe_details:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<h1><%= recipe.name %></h1>
<h2><%= recipe.time_in_minutes %> minutes until it's ready | By: <%= link_to recipe.user_name, user_path(recipe.user)%></h2>

<%= render 'favorites/favorited', recipe: recipe%>

<%= render 'ingredients/list_ingredients', recipe: recipe %>

<h4><%= recipe.instructions %></h4>

  <%= link_to "Edit", edit_recipe_path(recipe) if logged_in? && current_user.can_edit?(recipe)%>

  <%= link_to "Delete", recipe_path(recipe), method: :delete if logged_in? && current_user.can_delete?(recipe)%>

Which then pulls in 2 more partials, one for the favorite icon (our smallest partial), and one for ingredients:

favorites/favorited partial:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<% if current_user && recipe.favorite?(current_user) %>
  <span class="favorites favorited">
    <%= link_to image_tag("heart-red.png"), "#", :data => {:recipe => recipe.id }%>
    
  </span>
<% else %>
  <span class="favorites favorite">
    <%= link_to image_tag("heart.png"), "#", :data => {:recipe => recipe.id }%>
  </span>
<% end %>

ingredients/list_ingredients partial:

1
2
3
4
5
<ul>  
  <% recipe.recipe_ingredients.each do |recipe_ingredient| %>
    <li><%= "#{recipe_ingredient.quantity} #{recipe_ingredient.ingredient.name}" %></li>
  <% end %>
</ul>

I hope this will inspire you to keep making partials as details as necessary!

Copyright Loving to Code 2025
Tech Nerd theme designed by Siteturner