所以我试图组合两个表并按start_date的顺序显示结果。 我尝试了一些东西,但因为它在技术上是一个嵌套循环,它给我每个项目的双重结果。 我目前的代码如下
<% @subcategory = Subcategory.all %>
<% @product = Product.all %>
<% (@product + @subcategory).each do |product, subcategory|%>
<% if product.display_on_home_page and !product.is_highlight_product and !(product == '..') or subcategory.
display_on_home_page and !subcategory.is_highlight_product and !(subcategory == '..')%>
<div class="column_entry">
<%= link_to image_tag(subcategory.image_attachment.url(:normal_page_size)), subcategories_content_url(subcategory.id), :controller=>'subcategories' %>
</div>
<% end %>
<% if product.price_from %>
<div class="column_entry">
<div class="product_special">
<span class="a">From Only</span>
<span class="b"><%= number_to_currency(product.price,:unit=>'€') %></span>
</div>
<%= link_to image_tag(product.product_image.url(:normal_page_size)), products_content_url(product.id), :controller=>'products' %>
</div>
<% else %>
<div class="column_entry">
<div class="product_special">
<span class="a">Only</span>
<span class="b"><%= number_to_currency(product.price,:unit=>'€') %></span>
</div>
<%= link_to image_tag(product.product_image.url(:normal_page_size)), products_content_url(product.id), :controller=>'products' %>
</div>
<% end %>
<% end %>
我知道这是一个相当长的复杂陈述,它应该循环遍历所有子类别和所有产品并显示图像,还有两种不同的方式来显示价格基于一个布尔值,表示是否价格是特定金额,或者从给定价格开始。
目前它正在读取循环,但它给了我错误
undefined method `is_highlight_product' for nil:NilClass
因为这是引用的表中的第一列,并且它在这里打破了,我认为在查看存储在表中的信息的能力方面肯定存在一些冲突。
我仍然对轨道上的红宝石很新,所以任何帮助,甚至只是在正确的方向上轻推都会非常感激。
如果您想了解更多信息,请在评论中提出,我会尽快将其提出来。
答案 0 :(得分:1)
这里的问题是,当你做这样的事情时:
(@product + @subcategory).each do |product, subcategory|
局部变量product
将首先遍历产品,然后通过子类别进行迭代,局部变量subcategory
将始终为零。
你能做什么,肮脏的方式 - 检查
if product.is_a?(Product)
# do your things
elsif product.is_a?(Subcategory)
# do other things
end