Ruby on rails Rails 3.0在呈现局部变量时未定义局部变量

Ruby on rails Rails 3.0在呈现局部变量时未定义局部变量,ruby-on-rails,ruby-on-rails-3,haml,partial-views,Ruby On Rails,Ruby On Rails 3,Haml,Partial Views,我正在使用Rails 3.0.20应用程序,我试图通过一个分部传递一个局部变量,它显示“undefined local variable”(未定义的局部变量)。我查看了关于这个问题的其他帖子,但无法修复它 这是我的使命,我要呈现巴黎 = f.fields_for :current_positions do |builder| = render :partial => 'current_position_fields', :locals => {:f =>

我正在使用Rails 3.0.20应用程序,我试图通过一个分部传递一个局部变量,它显示“undefined local variable”(未定义的局部变量)。我查看了关于这个问题的其他帖子,但无法修复它

这是我的使命,我要呈现巴黎

    = f.fields_for :current_positions do |builder|
        = render :partial => 'current_position_fields', :locals => {:f => builder, :foo => 'hi'}
这是我的部分

%tr.pos_start
    %td
        = foo
        = f.hidden_field :id, class: "pos_id"
        = f.label :name, "Position Name"
    %td= f.text_field :name
%tr.pos_loc
    %td= f.label :location, "Position Location"
    %td= f.text_field :location
%tr.pos_end
    %td= f.label :year, "Position Year"
    %td= f.text_field :year
    %td.fields
        = link_to_remove_fields "DEL", f
错误消息是

undefined local variable or method `foo' for #<#<Class:0x00000008d4a050>:0x00000008d3c590>
未定义的局部变量或方法“foo”#
如果我把
=foo
从代码中去掉,其他一切都会起作用。

试试:

 =render 'current_position_fields', :f => builder, :foo => 'hi'

发现错误时,我也在应用程序帮助程序中调用分部,但没有传递适当的局部变量


当我可以将部分复制到另一个名称并使用变量调用它时,我发现了这一点。

您的确切用例是什么,而不是指向字符串的
foo
?它当前指向一个字符串,因此可能是
=“#{foo}”
?我试图为隐藏的_字段:id创建一个唯一的引用,以便我可以通过下面的jquery访问它,以克服用户在浏览器中点击后退按钮时出现的错误。因此,我将不传递“foo”,而是传递一个计数器/索引,我将在呈现分部的循环中更新该计数器/索引,并将其附加到隐藏的_字段:id的类名和下面的脚本调用中。现在我想知道为什么我不能把一个简单的字符串传递给partial。你的
render
语法是完全正确的,好吧。刚刚在我的本地开发人员上试用了一下,效果很好。如果map7使用的那个不起作用,这也不会起作用
render
检查第一个参数是
字符串还是
散列
;如果是散列,它将用部分、局部、集合等的键/值来解释它,如果第一个参数是字符串,它将第一个参数视为部分名称,其余部分视为局部变量,从而形成散列本身。我遇到了同样的问题,您的解决方案解决了它!谢谢在我的例子中,我有一个部分也使用渲染,当我更改另一个渲染时,我没有更改该渲染。