Reputation: 527
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
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
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