bogumbiker
bogumbiker

Reputation: 527

passing values to partial in rails 3

Here is how I pass the values/variable to the partial:

<%= render "partials/banner", :locals => {:text_1 => t(:"main.home.banner_text_1"),
                                          :text_2 => t(:"main.home.banner_text_2") } %>

then in the partial:

 <%= text_1 %> <%= text_2 %>

but getting "undefined local variable or method text_1"

Where should I set the variable so it could be accesible from all views and layouts in my app?

Thanks!

Upvotes: 12

Views: 12762

Answers (2)

Andrew K
Andrew K

Reputation: 1349

I believe that Rails 3 has changed how you pass partial variables, to something like this:

<%= render :partial => 'layouts/test',
       :text_1 => t(:'text_1'), :text_2 => t(:'text_2') %>

Rails will parse that and since :text_1 is not a known key (like :collection or :as), it passes it to the partial itself.

You can access it via text_1 or text_2

Upvotes: 12

Warren Noronha
Warren Noronha

Reputation: 599

If you have something that has to be displayed across all your views you can also create a application_helper method, Example: banner('Text', 'Content')

Try this:

Main page:

<%= render :partial => 'layouts/test',
           :locals => {:text_1 => t(:'text_1'), :text_2 => t(:'text_2')}
%>

Partial:

<%= text_1 %> <%= text_2 %>

Upvotes: 28

Related Questions