问题
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!
回答1:
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 %>
回答2:
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
来源:https://stackoverflow.com/questions/3222598/passing-values-to-partial-in-rails-3