Search code examples
ruby-on-railsview

How does local_assigns work in Rails?


I've been googling around about this and can't find the right path. I'm working on a Rails app that is using a method called local_assigns. This appears to be something in Rails or a gem, and not specific to my app, but it's used for rendering a partial in different contexts, such as this:

<% if local_assigns[:custom_name] %>
  <li><%= custom_name %></li>
<% else %>

or also this:

<%= render "discussions/complementary/#{local_assigns[:action] || params[:action]}" %>

Is this is Rails method? Where can I find more documentation about this?


Solution

  • local_assigns is a Rails view helper method that you can check whether this partial has been provided with local variables or not.

    Here you render a partial with some values, the headline and person will become accessible with predefined value.

    <%= render "shared/header", { :headline => "Welcome", :person => person } %>
    

    In shared/header view:

    Headline: <%= headline %>
    First name: <%= person.first_name %>
    

    Here is how you check these variables has passed in or not:

    <% if local_assigns.has_key? :headline %>
      Headline: <%= headline %>
    <% end %>
    

    Check this document for more detail on the section rails 3.2 Passing local variables to sub templates.

    Updated rails 7 link: ActionView/Base.html