将值传递给轨道3中的部分

bog*_*ker 12 ruby-on-rails partial

以下是我将values /变量传递给partial的方法:

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

然后在部分:

 <%= text_1 %> <%= text_2 %>
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢!

小智 28

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

试试这个:

主页:

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

部分:

<%= text_1 %> <%= text_2 %>
Run Code Online (Sandbox Code Playgroud)

  • 谢谢添加":partial =>"终于解决了问题.想知道为什么没有它不起作用?无论如何是的,我需要在我的所有视图中显示 - 您能否提供更多详细信息banner('text','content')辅助方法应该如何?干杯 (4认同)

And*_*w K 12

我相信Rails 3改变了你传递部分变量的方式,改为:

<%= render :partial => 'layouts/test',
       :text_1 => t(:'text_1'), :text_2 => t(:'text_2') %>
Run Code Online (Sandbox Code Playgroud)

Rails将解析它,因为:text_1不是已知密钥(如:collection或:as),它将它传递给部分本身.

您可以通过text_1text_2访问它