Ruby on rails 是否对嵌套对象轨道进行分页
我希望我能正确地解释这一点,目前我有一个模型,有以下联系Ruby on rails 是否对嵌套对象轨道进行分页,ruby-on-rails,ruby,will-paginate,Ruby On Rails,Ruby,Will Paginate,我希望我能正确地解释这一点,目前我有一个模型,有以下联系 class Tournament < ActiveRecord::Base has_one :gallery, dependent: :destroy has_many :gallery_images, :through => :gallery, dependent: :destroy end 看法 我怎样才能仅对t.gallery_图像进行分页 控制器中的任何帮助定义一个帮助方法paginate\u图像 hel
class Tournament < ActiveRecord::Base
has_one :gallery, dependent: :destroy
has_many :gallery_images, :through => :gallery, dependent: :destroy
end
看法
-
我怎样才能仅对t.gallery_图像进行分页
控制器中的任何帮助定义一个帮助方法
paginate\u图像
helper_method :paginate_images
def paginate_images tournament
@images = tournament.gallery_images.paginate(:page => params[:page], :per_page => 9)
end
在你看来
<% @tournaments.each do |t| %>
<div>
<div class="clear"></div>
<ul class="team-gallery">
<% paginate_images(t) %>
<% @images.each do |g| %>
<li>
<%= link_to image_tag(g.photo.url(:gallery_large)), g.photo.url(:gallery_large), class: 'clb-photo' %>
</li>
<% end %>
</ul>
</div>
<% end %>
-
您确定这是有效的代码吗
@gallery_images = @tournaments.gallery_images.paginate(:page => params[:page], :per_page => 9)
您正在调用ActiveRecord集合上的gallery\u images
,这似乎是一个实例方法,它本质上是一个数组。那不行
我怀疑你想在比赛中循环,并在每场比赛的图像上调用paginate
<% @tournaments.each do |t| %>
<%= will_paginate t.gallery_images.paginate(page: params[:page], per_page: 9) %>
<% end %>
然后,您可以在视图中执行此操作:
<% @tournaments.each do |t| %>
<% images = t.paginated_images(params[:page]) %>
<% images.each do |image| %>
<%= image_tag image %>
<% end %>
<%= will_paginate images %>
<% end %>
两种答案都试过了,但都没有达到预期效果,仍然得到了未定义的方法,尽管两种答案都很有帮助,目前的解决方案如下
它的工作原理是将gallery_图像分页,但我会做一些调整,到目前为止,我在视图中看到的有点难看,但会创建一个帮助器方法来改变这一点
<% @tournaments.each do |t| %>
<div>
<div class="clear"></div>
<ul class="team-gallery">
<% images = t.gallery_images.paginate(:page => params[:page], :per_page => 9).each do |g| %>
<li>
<%= link_to image_tag(g.photo.url(:gallery_large)), g.photo.url(:gallery_large), class: 'clb-photo' %>
</li>
<% end %>
</ul>
<%= will_paginate images %>
</div>
参数[:page],:per_page=>9)。每个do | g |%>
-
将您的锦标赛控制器
与完成分页
的方法一起发布。它确实在那里,但我已经用我的triedOk更新了。现在将这一行
更改为
,这可能会有所帮助,但不幸的是,它仍然在为锦标赛对象分页,而不仅仅是针对gallery_图像
class Tournament
def paginated_images(page, per_page = 9)
gallery_images.paginate(page: page, per_page: per_page)
end
end
<% @tournaments.each do |t| %>
<% images = t.paginated_images(params[:page]) %>
<% images.each do |image| %>
<%= image_tag image %>
<% end %>
<%= will_paginate images %>
<% end %>
<% @tournaments.each do |t| %>
<div>
<div class="clear"></div>
<ul class="team-gallery">
<% images = t.gallery_images.paginate(:page => params[:page], :per_page => 9).each do |g| %>
<li>
<%= link_to image_tag(g.photo.url(:gallery_large)), g.photo.url(:gallery_large), class: 'clb-photo' %>
</li>
<% end %>
</ul>
<%= will_paginate images %>
</div>