Ruby on rails 在view或index.html.erb中同时显示嵌套属性

Ruby on rails 在view或index.html.erb中同时显示嵌套属性,ruby-on-rails,ruby-on-rails-4,activerecord,rails-activerecord,nested-attributes,Ruby On Rails,Ruby On Rails 4,Activerecord,Rails Activerecord,Nested Attributes,我有一个带有大多数属性的产品模型,并且与我的产品图像模型有很多关系。所有的更新、编辑等工作都很有魅力,但我很难将数据导入前端引导主题 我想做的是让最后5个产品和默认图像通过,这样我就可以有一个产品图像和相关的产品属性。目前,我有两个单独的数组中的所有属性和所有图像 我已经看过了group_by,但我不知道如何将属性+图像按产品id从两个阵列组合在一起。我只是不知道如何进行 app/controller/home\u controller.html.erb class HomeController

我有一个带有大多数属性的产品模型,并且与我的产品图像模型有很多关系。所有的更新、编辑等工作都很有魅力,但我很难将数据导入前端引导主题

我想做的是让最后5个产品和默认图像通过,这样我就可以有一个产品图像和相关的产品属性。目前,我有两个单独的数组中的所有属性和所有图像

我已经看过了group_by,但我不知道如何将属性+图像按产品id从两个阵列组合在一起。我只是不知道如何进行

app/controller/home\u controller.html.erb

class HomeController < ApplicationController
  def index
    @products = Product.last(5)
    @product_ids = @products.map(&:id)
    @product_images = ProductImage.where(:product_id => @product_ids, 
    :default_image => true )
  end
end
 <% @products.each do |pd| %>
      <%= pd.product_name %>
  <% end %>
  <% @product_images.each do |pi| %>
      <%= image_tag (pi.product_image(:medium)) %>
  <% end %>
根据suslov的回答更新了index.htmml.erb部分

 Product Load (0.0ms)  SELECT  `products`.* FROM `products`   ORDER BY `products`.`id` DESC LIMIT 5
  SQL (1.0ms)  SELECT  DISTINCT `products`.`id` FROM `products` LEFT OUTER JOIN `product_images` ON `product_images`.`product_id` = `products`.`id` WHERE `product_images`.`product_id` IN (1, 2) AND `product_images`.`default_image` = 1  ORDER BY `products`.`id` DESC LIMIT 5
  SQL (0.0ms)  SELECT `products`.`id` AS t0_r0, `products`.`product_name` AS t0_r1, `products`.`product_description` AS t0_r2, `products`.`product_type_id` AS t0_r3, `products`.`product_category_id` AS t0_r4, `products`.`product_colour_id` AS t0_r5, `products`.`product_size_id` AS t0_r6, `products`.`created_at` AS t0_r7, `products`.`updated_at` AS t0_r8, `product_images`.`product_id` AS t1_r0, `product_images`.`created_at` AS t1_r1, `product_images`.`updated_at` AS t1_r2, `product_images`.`id` AS t1_r3, `product_images`.`product_image_file_name` AS t1_r4, `product_images`.`product_image_content_type` AS t1_r5, `product_images`.`product_image_file_size` AS t1_r6, `product_images`.`product_image_updated_at` AS t1_r7, `product_images`.`default_image` AS t1_r8 FROM `products` LEFT OUTER JOIN `product_images` ON `product_images`.`product_id` = `products`.`id` WHERE `product_images`.`product_id` IN (1, 2) AND `product_images`.`default_image` = 1 AND `products`.`id` IN (2, 1)  ORDER BY `products`.`id` DESC
  Rendered home/index.html.erb within layouts/application (0.0ms)
 <div class="row text-center">
      <% @product_images.each do |pd| %>
          <%= content_tag :div, :class => "col-md-3 col-sm-6 hero-feature" do %>
          <% pd.product_images.each do |i| %>
              <div class="thumbnail">
                <%= image_tag (i.product_image(:medium)) %>
          <% end %> </div>
          <div class="caption">
            <h3><%= pd.product_name %></h3>
            <p><%= pd.id %></p>
            <p></p>
          </div>
          <% end %>
      <% end %>
    </div>

“col-md-3 col-sm-6英雄功能”do%>


如果您在
产品
模型中明确设置了
具有多个
关联,则可以尝试使用
包含
(假设is命名为
产品图片
):

app/controller/home_controller.rb:

app/views/home/index.html.erb:



非常接近。如果我删除了image_标记,但图像没有显示,则属性是确定的。用于#打印出阵列的未定义方法“product_image”它似乎不包含任何图像。@JasonMorelandDigitalrecline:print生成的sql查询。[#,#]@JasonMorelandDigitalrecline:images无论如何都不应该存在。在嵌套循环内打印
i
,查看是否有任何内容。
 <div class="row text-center">
      <% @product_images.each do |pd| %>
          <%= content_tag :div, :class => "col-md-3 col-sm-6 hero-feature" do %>
          <% pd.product_images.each do |i| %>
              <div class="thumbnail">
                <%= image_tag (i.product_image(:medium)) %>
          <% end %> </div>
          <div class="caption">
            <h3><%= pd.product_name %></h3>
            <p><%= pd.id %></p>
            <p></p>
          </div>
          <% end %>
      <% end %>
    </div>
@products = Product.includes(:product_images)
                   .where(product_images: { default_image: true )
                   .last(5)
<div class="col-md-3 col-sm-6 hero-feature">
  <div class="thumbnail">
    <% @products.each do |pd| %>
        <% pd.product_images.each do |i| %>
            <%= image_tag (i.product_image(:medium)) %>
        <% end %>
    <div class="caption">
      <h3><%= pd.product_name %></h3> 
      <p><%= pd.id %></p> 
      <p></p>
    </div>
    <% end %>
  </div>
</div>