2013-05-22 42 views
0

这将是非常基本的,但我是新手到铁轨请帮助。 我在名为@product的类实例变量中有一些结果。我想比较两个产品结果。 @product有几个ID。我想比较连续的ids.Here是我想要做的。比较轨道中的相同类实例变量的两个元素

<% @products.results.each do |result| 
    bid=Brand.where("id=?",result.brand_id) 
    bid1=Brand.where("id=?",result+1.brand_id) %> 
    <% if (bid==bid1) %> 
     do something 
    <% end %> 
<% end %> 

但我没有得到结果。请指导我哪里出错。

+0

你能张贴的定义或解释一点关于你的'Product'之间的关系,'结果“和”品牌“模型? – veidt

+0

@amesee products.results有许多brand_id,如1,23,23,20等。我想每次比较两个brandid。因为我在使用products.each如何比较两个结果??例如在第一次迭代bid = 1时从上面的代码。在同一次迭代中,我想比较bid1(存储下一个品牌id的变量,此例中bid1 = 23)。这个怎么做?? – user2218532

回答

0

从你的代码中,你很难清楚你想做什么,但是有很多错误。一个接一个:

如果你想在视图中做所有的事情,你需要在第2行和第3行添加ERB标签<% %>,否则它们不会被解释为ruby代码,被打印为html。

在您的视图中拥有如此多的逻辑通常不是一个好主意 - 如果有必要,在模型中甚至控制器中进行比较会更好。

result+1.brand_id将抛出一个错误,因为'1'没有方法'brand_id'。想必你想做result.brand_id + 1

相反的Brand.where("id=?",result.brand_id),你可以做Brand.find(result.brand_id)

+0

products.results有许多brand_id,如1,23,23,20等。我想一次比较两个brandid。因为我使用products.each如何比较两个结果? – user2218532

0

您可以使用 “包括哪些内容?”红宝石方法,而不是

只是存储在阵列中的所有的ID,然后作为显示例如在做以下操作:

a = [ 1, 2, 3 ] 
a.include?(1) #=> true 
a.include?(4) #=> false 

的更多详情,请按照下面的链接:

http://apidock.com/ruby/Array/include%3F

0

试试这个

<% arr = @products.results.all %> 
<% arr.shift %> 
<% @products.results.each_with_index do |result,i| %> 
    <% bid=result.brand %> 
    <% if (bid==arr[i]) %> 
     do something 
    <% end %> 
<% end %> 
0

首先把你的结果int Ø一个数组,所以也许在控制器类似:

@results = @product.results 

然后在视图:

<% @results.each_with_index do |result, index| 
    <% if result.brand_id == @results[index.next].brand_id %> 
    # do something 
    <% end %> 
<% end %>