2013-05-19 67 views
2

我正在使用Rails 3.0.20應用程序,我試圖通過局部變量傳遞局部變量,它顯示'未定義的局部變量'我已經看過在這個問題上的其他帖子,並不能解決它。Rails 3.0未定義局部變量呈現部分

這裏是我的電話,以使parital

= 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出來的代碼一切工作。

+0

你的確切用例是什麼,而不是'foo'指向一個字符串?它當前指向一個字符串,所以可能是'=「#{foo}」'? – kiddorails

+0

我想爲hidden_​​field:id做一個唯一的引用,以便我可以通過下面的一些jquery來訪問它,以克服用戶在瀏覽器中點擊後退按鈕的錯誤。因此,不是'foo',我最終會傳遞一個計數器/索引,我將在循環中更新該部分,並將其附加到hidden_​​field:id的類名稱中,並在我的腳本調用下面。此刻,我想知道爲什麼我無法將簡單的字符串傳遞給部分。 – map7

+1

您的'render'語法是完全正確的,afaik。剛剛在我的本地開發中投入了一筆,工作得很好。 – kiddorails

回答

7

發現我的錯誤,我打電話的部分應用程序中的幫助,以及和沒有通過在適當的局部變量。

我發現這個時,我可以複製部分到另一個名稱,並調用一個變量,它的工作。

+0

是...我很高興你指出了這一點:p – TopGunCoder

+1

我有同樣的問題,你的解決方案解決了它!謝謝! 在我的情況下,我有一個部分也使用渲染,並且當我改變另一個渲染時,我沒有改變渲染。 – Mario

0

嘗試:

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

如果map7使用的那個不能正常工作,這也不起作用。 'render'檢查第一個參數是一個String還是一個'Hash';如果一個散列,它用部分,本地,集合等的鍵/值解釋它,如果第一個參數是字符串,它通過將第一個參數視爲部分名稱並將其餘部分視爲本地來形成散列本身。 – kiddorails

相關問題