12

这是我将值/变量传递给部分的方式:

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

然后在部分:

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

但得到“未定义的局部变量或方法text_1”

我应该在哪里设置变量,以便我的应用程序中的所有视图和布局都可以访问它?

谢谢!

4

2 回答 2

28

如果您必须在所有视图中显示某些内容,您还可以创建一个 application_helper 方法,例如:banner('Text', 'Content')

试试这个:

主页:

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

部分的:

<%= text_1 %> <%= text_2 %>
于 2010-07-11T11:57:14.417 回答
12

我相信 Rails 3 已经改变了传递部分变量的方式,如下所示:

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

Rails 会解析它,因为 :text_1 不是一个已知的键(如 :collection 或 :as),它会将它传递给部分本身。

您可以通过text_1text_2访问它

于 2011-04-28T16:43:15.583 回答