Difference between Render and Render Partial and Yield Difference between Render and Render Partial and Yield ruby-on-rails ruby-on-rails

Difference between Render and Render Partial and Yield


render & render partial:

  • render 'some_view' is a shorthand for render partial: 'some_view'.
  • render file: 'view' will look for a file view.html.erb and NOT _view.html.erb (.erb or any other renderer you use)
  • render will not accept additional local variables for the partial, you need to use render partial: as following for that:

    render partial: 'some/path/to/my/partial', locals: { custom_var: 'Hello' }

(http://guides.rubyonrails.org/layouts_and_rendering.html#passing-local-variables)

yield & content_for

  • yield is typically used in layouts. It tells Rails to put the content for this block at that place in the layout.
  • When you do yield :something associated with content_for :something, you can pass a block of code (view) to display where the yield :something is placed (see example below).

A small example about yield:

In your layout:

<html><head> <%= yield :html_head %></head><body> <div id="sidebar">   <%= yield :sidebar %> </div></body>

In one of your view:

<% content_for :sidebar do %>  This content will show up in the sidebar section<% end %><% content_for :html_head do %>  <script type="text/javascript">    console.log("Hello World!");  </script><% end %>

This will produce the following HTML:

<html><head>  <script type="text/javascript">    console.log("Hello World!");  </script></head><body> <div id="sidebar">   This content will show up in the sidebar section </div></body>

Posts that might help:

Links to documentation & guides:


About render , render :partial and yield

  • render :template and render :partial are two files in rails..


    render :template are mostly created according to an action with syntax demo.html.erb

    render :partial are reuseable and called from different views , are shared among many pages in application and syntax is _demo.html.erb

  • yield and render..


Yield is a way to call a block of code with its output but render will include a partial page template where it is called. In rails yield is mostly used in layout whereas render is used in actions or their templates