2013-05-22 81 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 %>