我正在尝试创建一个链接到相册的图库页面。相册工作正常,但我试图将每个gallery_id中的第一个图像拉到图库页面。我有一个画廊有很多照片,照片属于画廊。我得到的是每张专辑的第一张图片加载。
类GalleriesController< ApplicationController中
def index
@gallery = Gallery.paginate(page: params[:page]).per_page(6)
@photos = Photo.find(:all, :limit => 1)
end
def show
@gallery = Gallery.find(params [:id])
@ photos = @ gallery.photos.all
结束
端
画廊/ index.html中。
<% provide(:title, 'Photo Galleries') %>.
<div id="galleries">
<%= will_paginate @gallery %>
<ul class="thumbnails">
<% @gallery.each do |gallery| %>
<li class="span4">
<div class="thumbnail">
<% @photos.each do |photo| %>
<%= link_to image_tag(photo.image), gallery_path(gallery)%>
<% end %>
<h4><%= gallery.name %></h4>
</div>
</li>
<% end %>
</ul>
</div>
路由
resources :galleries, :has_many => :photos
任何帮助将不胜感激。
答案 0 :(得分:1)
很确定这就是你想要的:
class GalleriesController < ApplicationController
def index
@gallery = Gallery.paginate(page: params[:page]).per_page(6)
end
end
_
# galleries/index.html
<% provide(:title, 'Photo Galleries') %>
<div id="galleries">
<%= will_paginate @gallery %>
<ul class="thumbnails">
<% @gallery.each do |gallery| %>
<li class="span4">
<div class="thumbnail">
<%= link_to image_tag(gallery.photos.first.image), gallery_path(gallery) %>
<h4><%= gallery.name %></h4>
</div>
</li>
<% end %>
</ul>
</div>
你的问题是,你的索引动作中你抓住了所有的图像,无论它们属于哪个图库,然后你在视图中循环浏览所有图像并显示它们。
由于您的关联(图库has_many照片),您可以使用gallery.photos
访问图库的照片。
在我的示例中,我显示了每个图库的第一张图片:gallery.photos.first
如果您想要相关图库中的随机图片,可以使用sample
。即gallery.photos.sample
答案 1 :(得分:0)
你必须使用关系,这就是你需要的。我试图修复代码并添加评论。
class GalleriesController < ApplicationController
def index
@gallery = Gallery.paginate(page: params[:page]).per_page(6)
# You don't need the photos. You have to access them through gallery,
# or you will get always all photos independent of the gallery.
#@photos = Photo.find(:all, :limit => 1)
end
这是您正在寻找的视图
# galleries/index.html.erb
<% provide(:title, 'Photo Galleries') %>.
<div id="galleries">
<%= will_paginate @gallery %>
<ul class="thumbnails">
<% @gallery.each do |gallery| %>
<li class="span4">
<div class="thumbnail">
<% gallery.photos.each do |photo| %>
<%= link_to image_tag(photo.image), gallery_path(gallery)%>
<% end %>
<h4><%= gallery.name %></h4>
</div>
</li>
<% end %>
</ul>
</div>
如果您只想显示每个图库的第一张图片,则必须以这种方式更改视图:
# galleries/index.html.erb
<% provide(:title, 'Photo Galleries') %>.
<div id="galleries">
<%= will_paginate @gallery %>
<ul class="thumbnails">
<% @gallery.each do |gallery| %>
<li class="span4">
<div class="thumbnail">
<%= link_to image_tag(gallery.photos.first.image), gallery_path(gallery)%>
<h4><%= gallery.name %></h4>
</div>
</li>
<% end %>
</ul>
</div>