以下是我视图中调用partial的代码:
<%= 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),并多次重启服务器
提前感谢您的时间。
答案 0 :(得分:54)
我注意到如果我在部分路径之前没有包含'partial:',就像这样:
<%= render 'my_partial', :locals => {:class_Name => "Science", :y => 36} %>
我被要求在我的部分中使用哈希+符号来访问其他人已经注意到的所需值。
<div>
<h1> <%= locals[:class_Name] %> has a y value of <%= locals[:y] %></h1>
</div>
但是,在我的部分路径之前包括'partial:':
<% render partial: 'my_partial', :locals => {:class_Name => 'Science', :y => 36 } %>
...允许我直接调用哈希值。
<div>
<h1><%= class_Name %> has a y value of <%= y %></h1>
</div>
要记住一些事情,这个问题在尝试将本地哈希发送给我的部分时会让我失去一段时间。
答案 1 :(得分:20)
如果您在渲染中使用术语partial:
,例如:
<% render partial: 'your_partial', locals: {foo: 'Biggs', bar: 'Wedge'} %>
然后,您的本地人将只能foo
和bar
,因此可以直接访问:
<%= foo %> //returns Biggs
<%= bar %> //returns Wedge
但是,如果您在渲染中使用术语partials:
NOT ,例如:
<% render 'your_partial', locals: {foo: 'Biggs', bar: 'Wedge'} %>
然后您的本地人将成为locals
的成员,因此可以访问:
<% locals[:foo] %> //returns Biggs
<% locals[:bar] %> //returns Wedge
答案 2 :(得分:0)
它与我合作.. _tabs.html.erb
位于哪里?
答案 3 :(得分:0)
尝试这样的事情:
<%= render partial: "form" , locals:{ name_you_want_use_in_partial: @varialble_to_pass } %>
我遇到了同样的问题。 所以我查看了文档Ruby on Rails - passing local...并使用了fllowing符号 - 现在它正在工作:)
答案 4 :(得分:0)
这也发生在我身上。我正在使用Middleman,并且使用middleman server
可以正常工作,但是当我使用middleman build
构建站点时,遇到了问题中提到的错误。我尝试了上述所有方法,但没有一个起作用。事实证明,在构建阶段,中间人也尝试将部分文件构建为独立的html文件,从而产生错误。这样做的原因是因为我忘记为文件名加上下划线前缀,以将其从构建过程中排除。如果其他所有方法均失败,则只需将代码包装在if语句的局部语句中,如下所示:
<% if defined?(class_Name) %>
...
<% end %>
答案 5 :(得分:0)
就我而言,这与我如何将实例变量传递到局部变量无关,但这是因为 Rails 检测到局部变量中没有提供给局部变量< /strong>
由于这个非常简单的原因,您可能会收到错误(在这种情况下,您的代码调用部分可能绝对没有问题 - 检查部分代码是否有您未提供给它的任何变量)