2014-11-16 16 views
1

我想要呈現的部分,並想使用符號的數據傳遞進行收集:Rails的局部模板不能在符號

<%= render 'form', :locals => { :course => @course, :categories => @categories } %> 

在我的部分,雖然,我可以」牛逼執行收集有關:類符號,我得到這個錯誤:

undefined method `collect' for :categories:Symbol 

    Extracted source (around line #9): 

<%= f.select :category_id, :categories.collect{ |c| [c.name, c.id]}, {}, :style => 'font-size:1em;width:250px;' %> 

你能不能用符號這種方式?

回答

2

您正在呼籲:categoriescollect,而不是categories

<%= f.select :category_id, categories.collect { |c| [c.name, c.id]}, {}, :style => 'font-size:1em;width:250px;' %> 

代替

<%= f.select :category_id, :categories.collect{ |c| [c.name, c.id]}, {}, :style => 'font-size:1em;width:250px;' %> 

而且,你是混合兩種語法來調用render。它應該是

<%= render partial: 'form', :locals => { :course => @course, :categories => @categories } %> 

<%= render 'form', :course => @course, :categories => @categories %> 
+0

是的,如果我這樣做,但我試圖在這裏遵循最佳實踐。哦,諷刺:) – fatfrog

+1

最好的做法是將變量作爲本地來傳遞,就像你做的那樣,你在部分內部獲取它的方式是通過使用與本地方法相同的方式調用的自動生成的引用。當然沒有':'代表編寫符號的方式。 –

+1

你調用'render'的方式還有另一個錯誤,你通過'locals'。我更新了我的答案。 –

0

不要引用部分中的符號,請參考它們的實例。

<%= f.select :category_id, categories.collect{ |c| [c.name, c.id]}, {}, :style => 'font-size:1em;width:250px;' %> 
+0

的我得到這個錯誤:未定義的局部變量或方法'類爲#<#<類別:0x007ffa360021b0>:0x007ffa2bec9ed8>它的工作原理,如果我撲通@那裏有類別,所以它不是數據的問題。 – fatfrog