2009-08-06 55 views
10

我呈現的部分,像這樣:Rails的時候發送到另一部分不堅持局部當地人自己的本地

<%= render :partial => 'widgets/some_partial, :locals => {:foo => 'bar'} %> 

所以_some_partial.html.erb內我呈現像兩個諧音這樣:

<% #foo.nil? #=> false %> 
<%= render :partial => 'widgets/another_partial', :locals => {:foo => foo} %> 
`<%= render :partial => 'widgets/another_partial_again', :locals => {:foo => foo} %>` 

foo局部變量在some_partial.html.erb中甚至在another_partial_again.html.erb中呈現罰款。但是,即使我明確地在渲染調用中傳遞它,foo變量在another_partial.html.erb中也是不可訪問的。

發生了什麼事嗎?

感謝您的幫助。

+0

「無法訪問」是什麼意思?它會拋出一個「未定義的局部變量或方法」還是「無」?你可以在這些子部分顯示使用'foo'的代碼嗎? – hsribei 2009-08-06 17:48:46

+0

它拋出未定義的本地變量 – user94154 2009-08-06 17:49:43

+0

代碼很簡單:<%= foo %> – user94154 2009-08-06 17:50:28

回答

3

解決。原來我也是從控制器渲染相同的局部變量而不發送適當的局部變量。不管怎麼說,多謝拉!!!

+1

我實際上有同樣的問題,我的解決方案是完全一樣的 - 當我看到你的錯誤時,我發現它:P – 2009-08-11 09:23:37

+0

呃我也是!哈。 我改變了我的哈姆從:「 - 如果myvar」到「 - 如果定義?(myvar)&& myvar」 – Chris 2011-07-19 16:37:36

+0

在這裏相同,在AJAX中傳遞部分,忘記更改符號 – yoshyosh 2012-01-07 02:31:15

41

我有undefined local variable or method錯誤對我來說也是當我用:locals定義的部分渲染。

但是,我遇到了不同的問題,導致我的問題,所以我想我會分享我的解決方案,以防其他人幫助。 (這個頁面是我在google搜索到這個錯誤後的第一個結果)

基本上只是確保你在render的調用中使用:partial => 'path/to/partial'

I.e.

<%= render :partial => 'widgets/some_partial', :locals => {:foo => 'bar'} %> 

不喜歡我做的:

<%= render 'widgets/some_partial', :locals => {:foo => 'bar'} %> 

容易讓導軌/紅寶石新手像我一樣錯過。

+0

+1救生員,謝謝! – 2010-12-14 08:44:40

+6

+1 @ asgeo1奇怪的是,你需要':partial'來使它工作,但這確實有效! – iwasrobbed 2011-04-11 20:31:25

+0

哇!謝謝......我只是在學習Ruby,對於這個錯誤我完全感到困惑。我希望我能修改更多的觀點。 – Nabheet 2012-02-12 19:04:01

0

撞到這個非常古老的問題,因爲我面臨同樣的問題。 原來,使用Rails 4+,如果你不使用集合或佈局正確的做法是:

# Instead of <%= render partial: "account", locals: { account: @buyer } %> 
<%= render "account", account: @buyer %> 

如記錄here