这将是非常基本的,但我是铁杆的新手,请帮忙。 我在一个名为@product的类实例变量中得到了一些结果。我想比较两个产品结果。 @product有几个ID。我想比较连续的ID。这就是我想要做的。
<% @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 :(得分:0)
从你的代码来看,你还不清楚你想做什么,但是有很多错误。一个接一个:
如果你想在视图中完成所有这些操作,你需要将ERB标记<% %>
添加到第2行和第3行,否则它们将不会被解释为ruby代码而只是打印为html。
在您的视图中拥有如此多的逻辑通常不是一个好主意 - 如果需要,更好的方法是在模型或控制器中进行比较。
result+1.brand_id
会抛出错误,因为'1'没有方法'brand_id'。大概你想做result.brand_id + 1
。
而不是Brand.where("id=?",result.brand_id)
,您可以Brand.find(result.brand_id)
答案 1 :(得分:0)
你可以使用“include?”而不是ruby方法
只需将所有ID存储在数组中,然后如示例所示执行以下操作:
a = [ 1, 2, 3 ]
a.include?(1) #=> true
a.include?(4) #=> false
了解更多详情,请点击以下链接:
答案 2 :(得分: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 %>
答案 3 :(得分:0)
首先将结果放入数组中,因此可能在控制器中使用:
@results = @product.results
然后在视图中:
<% @results.each_with_index do |result, index|
<% if result.brand_id == @results[index.next].brand_id %>
# do something
<% end %>
<% end %>