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>