2013-12-17 80 views
0

我有一個產品,可以是部分程序集。我只有一個組件,我稱之爲捆綁包在Ruby on Rails中的Find_by_id

原來,因爲一個產品有任何,我包括一個附加選項

如果我使用

<% if @product.parts.any?(&:in_stock?) %> 
HERE I SHOW OPTION FORM 
<% end %> 

這工作,並顯示我的選項。但是現在我有另一個選項可以顯示。

我需要顯示選項到相應的ID。似乎我的原始產品部件的ID爲'捆綁',所以我嘗試過:

<% if @product.parts.find_by_id('bundle') %> 

但是我的選項沒有加載。任何想法我可能做錯了什麼?我沒有收到錯誤,只是沒有找到該ID。

軌道4 &施普雷2.1+

+0

是'bundle'int?嘗試find_by_id(params [:part_id]) –

+1

你的模式是什麼樣的? –

回答

2

除非你使用像friendly_id寶石,我不認爲你的零件的ID都將是「捆綁」。通常它們是一個自動增量整數。你是否100%確定這是id?我會建議看軌道建立在找到方法here。它看起來像你可能想要find_by_name。

0

我的模式表明,我一直在尋找的是一個整數:

t.integer "part_id" 

特定產品部分被裝入DB:

Spree::AssembliesPart Load SELECT "spree_assemblies_parts".* FROM "spree_assemblies_parts" WHERE "spree_assemblies_parts"."assembly_id" = 4 AND "spree_assemblies_parts"."part_id" = 6 LIMIT 1 

然後我用載入的PART_ID,這在我的情況是6

這find_by方法然後工作:

<% if @product.parts.find_by_id('6') %>