Difference between Render and Render Partial and Yield
render
& render partial:
render 'some_view'
is a shorthand forrender partial: 'some_view'
.render file: 'view'
will look for a fileview.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 userender 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 withcontent_for :something
, you can pass a block of code (view) to display where theyield :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