2013-04-02 36 views
0

我試圖渲染表格列「組」設置爲「女性」的產品頁面上的部分內容。無法使用插值實例變量渲染部分

在products_controller.rb我:

@subnav = Spree::Product.find(params[:group]) 

然後在產品#表明我有:

<div class="subnav"> 
<%= render "spree/shared/#{@subnav}_subnav" %> 
</div><!--subnav --> 

因此,當一個產品組 「婦女」 它應該呈現「大禮包/共享/ women_subnav」。而是我得到「在施普雷/產品展示#::的ActionView MissingTemplate」錯誤,說

"Missing partial spree/shared/_subnav with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee, :rabl], :versions=>[:v1]}. 

所以,由於某種原因,它甚至沒有認識到變量的存在。

我也試過

@subnav = params[:group] 

@subnav = Product.find(params[:group] 

感謝您的幫助!

+0

你給這個錯誤打了什麼URL?如何定義您的路線? – pierallard

+0

http://pants.telegraphbranding.com/products/:id – reknirt

+0

哦,我明白了。我需要:在網址組? – reknirt

回答

1

您有此錯誤,因爲在<%= render "spree/shared/#{@subnav}_subnav" %>,@subnav爲零或空白。 這是空白,因爲params[:group]是無或空白。它是空白的,因爲params沒有:group鍵。

您的網址是pants.telegraphbranding.com/products/:id

這意味着PARAMS有一個關鍵:id

如果你想獲得一組,你必須定義一個像這樣的路線:

pants.telegraphbranding.com/groups/:group_id/products/:id 

或直接在URL通過組:pants.telegraphbranding.com/products/123?group_id=456

接下來,你可以寫

@subnav = Spree::Product.find(params[:group_id]) 
0

根據評論你沒有通過網址中的服務器傳遞組參數。

@subnav = Spree::Product.find(params[:group]) 

這裏@subnav將是零和字符串替換插值 「#{@ subnav}」 與空字符串。

此外@subnav將ActiveRecord的實例不是字符串,因此您需要調用將返回字符串的必需屬性(在您的情況下爲「女性」)。

一個或多個音符@subnav的謹慎校驗值的渲染局部處理空值

<% unless @subnav.nil? %> 
<div class="subnav"> 
<%= render "spree/shared/#{@subnav.name}_subnav" %> 
</div><!--subnav --> 
<% end %> 

假設名稱爲ActiveRecord的實例舉行「婦女」的屬性值前