如何让我的图片 collection 显示页面显示每个 collection 的前 3 张图片
How to get my image collections display page to show the first 3 images for each collection
我已经建立了一个我的网站,这样我的用户就可以创建单独的产品 collection 并将他们的列表添加到每个 collection。然后我创建了一个网站页面,显示所有用户创建的所有 collection。现在我有 collection 名称和每个 collection 显示的 "by so-and-so",都很好。我现在想在顶部显示每个 collection 的前 3 个列表图像。我可以使用@listings = Listings.all 从我的列表数据库中获取前 3 张图像以显示在每个 collection 中,但这是不正确的。但至少这证实了一切都相连。我的控制器在按 'collection_id' 定义 @listings 时遇到问题。我尝试了很多不同的变体,下面的变体是我目前卡住的地方,它提供空白 collection 并且无法识别 any/or 每个 collection 的列表。
我的页面控制器:
@collections = Collection.all.order("created_at DESC")
@listings = Listing.where(collection_id: @collection)
我的 Collections 查看页面:
<% @collections.each do |collection| %>
<% @listings.limit(3).each do |listing| %>
<%= image_tag listing.image.url(:small) %>
<% end %>
<%= collection.name %>
<%= collection.user.business_name %>
<% end %>
我的控制器缺少什么来让图像显示:collection_id?我是否需要更改视图页面中的任何内容?此外,可以将@listings.limit(3).each 嵌套在我的@collection 中吗?
您查询的房源与collection无关,您应该这样做
<% @collections.each do |collection| %>
<% collection.listings.limit(3).each do |listing| %>
所以你不需要 @listings
查询,但你需要的是预加载,这样你就不会在每个循环中都查询
@collections = Collection.includes(:listings).order(created_at: :desc)
如果 images
也是另一个 object,那么您也可以将它们包含在 includes
中
@collections = Collection.includes(listings: :images).order(created_at: :desc)
我已经建立了一个我的网站,这样我的用户就可以创建单独的产品 collection 并将他们的列表添加到每个 collection。然后我创建了一个网站页面,显示所有用户创建的所有 collection。现在我有 collection 名称和每个 collection 显示的 "by so-and-so",都很好。我现在想在顶部显示每个 collection 的前 3 个列表图像。我可以使用@listings = Listings.all 从我的列表数据库中获取前 3 张图像以显示在每个 collection 中,但这是不正确的。但至少这证实了一切都相连。我的控制器在按 'collection_id' 定义 @listings 时遇到问题。我尝试了很多不同的变体,下面的变体是我目前卡住的地方,它提供空白 collection 并且无法识别 any/or 每个 collection 的列表。
我的页面控制器:
@collections = Collection.all.order("created_at DESC")
@listings = Listing.where(collection_id: @collection)
我的 Collections 查看页面:
<% @collections.each do |collection| %>
<% @listings.limit(3).each do |listing| %>
<%= image_tag listing.image.url(:small) %>
<% end %>
<%= collection.name %>
<%= collection.user.business_name %>
<% end %>
我的控制器缺少什么来让图像显示:collection_id?我是否需要更改视图页面中的任何内容?此外,可以将@listings.limit(3).each 嵌套在我的@collection 中吗?
您查询的房源与collection无关,您应该这样做
<% @collections.each do |collection| %>
<% collection.listings.limit(3).each do |listing| %>
所以你不需要 @listings
查询,但你需要的是预加载,这样你就不会在每个循环中都查询
@collections = Collection.includes(:listings).order(created_at: :desc)
如果 images
也是另一个 object,那么您也可以将它们包含在 includes
中
@collections = Collection.includes(listings: :images).order(created_at: :desc)