29

这是我认为调用部分的代码:

<%= render(:partial => "tabs", :locals => {:class_Name => "Science", :y => 36}) %>

现在这是 _tabs.html.erb 中的内容:

<div>
<h1> <%= class_Name %> </h1>
</div>

我期望 HTML 输出:

<div>
<h1> Science </h1>
</div>

但相反,我得到了错误:

undefined local variable or method `class_Name' for #<#<Class:0x007f873b156c28>:0x007f873b1f9540>

我已关闭并重新启动 Aptana(我使用的 IDE),并多次重新启动服务器

在此先感谢您的时间。

4

6 回答 6

68

我注意到,如果我在部分路径之前没有包含“部分:” ,如下所示:

<%= render 'my_partial', :locals => {:class_Name => "Science", :y => 36} %>

正如其他人所指出的那样,我被要求在我的部分中使用哈希+符号来访问所需的值。

<div>
<h1> <%= locals[:class_Name] %> has a y value of <%= locals[:y] %></h1>
</div>

但是,在我的部分路径之前包括“部分:”:

<% render partial: 'my_partial', :locals => {:class_Name => 'Science', :y => 36 } %>

...允许我直接调用哈希值。

<div>
<h1><%= class_Name %> has a y value of <%= y %></h1>
</div>

只是要记住一点,当我尝试将本地哈希发送到我的部分时,这个问题让我绊倒了一段时间。

于 2014-02-08T21:08:51.517 回答
22

如果您partial:在渲染中使用该术语,例如像这样:

<% render partial: 'your_partial', locals: {foo: 'Biggs', bar: 'Wedge'} %>

然后,您的本地人将可以简单地使用foobar,因此可以直接访问:

<%= foo %> //returns Biggs 
<%= bar %> //returns Wedge

但是,如果您没有在渲染中使用该术语partials:,例如像这样:

<% render 'your_partial', locals: {foo: 'Biggs', bar: 'Wedge'} %>

然后,您的本地人将可以作为 的成员使用locals,可通过以下方式访问:

<% locals[:foo] %> //returns Biggs
<% locals[:bar] %> //returns Wedge
于 2014-10-24T00:34:07.183 回答
0

尝试这样的事情:

<%= render partial: "form" , locals:{ name_you_want_use_in_partial: @varialble_to_pass } %>

我有同样的问题。所以我查看了一个文档Ruby on Rails - 通过本地...我使用了流动符号 - 现在它正在工作:)

于 2013-09-30T08:04:34.333 回答
0

它对我很好..你_tabs.html.erb在哪里?

于 2013-04-26T05:51:59.310 回答
0

这也发生在我身上。我正在使用 Middleman 并且使用它工作正常middleman server,但是当我使用构建我的网站时,middleman build我遇到了问题中提到的错误。我尝试了上述所有方法,但都没有奏效。事实证明,在构建阶段,中间人也尝试将部分构建为独立的 html 文件,从而产生错误。原因是我忘记在文件名前加上下划线以将其从构建过程中排除。如果一切都失败了,只需将代码包装在部分的 if 语句中,如下所示:

<% if defined?(class_Name) %>
...
<% end %>
于 2019-10-02T11:56:47.197 回答
0

在我的情况下,这与我如何将实例变量传递给部分无关,但这是因为 rails 检测到部分内部提供给部分的变量

由于这个非常简单的原因,您可能会收到错误(在这种情况下,您的代码调用部分绝对没有问题 - 检查部分代码以查找您没有提供给它的任何变量)

于 2021-02-04T15:53:59.673 回答