2013-12-17 39 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') %>