passing values to partial in rails 3

送分小仙女□ 提交于 2019-11-29 02:49:09

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!