【问题标题】:combining 2 tables, looping through the results and displaying items from each组合 2 个表格,循环显示结果并显示每个表格的项目
【发布时间】:2013-11-19 09:20:04
【问题描述】:

所以我试图合并两个表并按 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

因为这是表中被引用的第一列并且它在这里中断,我认为它查看表中存储的信息的能力一定存在一些冲突。

我对 ruby​​ on rails 还是很陌生,因此非常感谢任何帮助,甚至只是朝着正确方向轻推。

如果您想了解更多信息,请在 cmets 中询问,我会尽快发布。

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 if-statement each


    【解决方案1】:

    这里的问题是,当你做这样的事情时:

    (@product + @subcategory).each do |product, subcategory|
    

    局部变量product会先遍历产品,再遍历子类别,局部变量subcategory总是nil。

    你能做什么,一个肮脏的方式 - 检查

    if product.is_a?(Product)
      # do your things
    elsif product.is_a?(Subcategory)
      # do other things
    end
    

    【讨论】:

    • 所以要遍历两者,我需要将它们添加到单个变量中,例如@product = Product.all@subcategory = Subcategory.all@combo = @subcategory + @product(@combo).each do |product, subcategory|,然后根据 product.is_a 定义 if 语句吗?(产品)等等。好吧,我让代码运行,但它只看到产品,我还有一些调整要做,但你的回答非常有帮助,如果它完全解决了这个问题,我很快就会接受它。
    • 您将无法通过它们并行循环(仅当您想进入线程时,但这很痛苦),您的模型是否有任何连接,例如:子类别belongs_to Product,还是什么?
    猜你喜欢
    • 2021-10-25
    • 1970-01-01
    • 2015-02-16
    • 2016-08-29
    • 2023-03-13
    • 1970-01-01
    • 2017-03-31
    • 2012-11-09
    • 1970-01-01
    相关资源
    最近更新 更多