Rails中的Paginating标签4

时间:2014-04-21 08:34:51

标签: ruby-on-rails ruby-on-rails-4 pagination tags

我正在使用Kaminari对帖子页面进行分页。一个帖子有很多标签,每个标签链接到一个" Show"显示包含该标记的所有帖子的页面。我试图对这个标签页面进行分页,但它从来都不起作用。

标记/显示

<div class="post-index">
    <h1><%= @tag.name %></h1>
    <ul>
      <% @tag.posts.each do |post| %>
        <li>
            <div class="post">
                <div class="featured-image">
                    <%= link_to image_tag(post.featured_image.url(:featured)), post_path(post) %>
                </div>

                <div class="info">
                    <div class="title">
                        <h2><%= link_to post.title, post_path(post) %></h2>
                    </div>

                    <div class="excerpt">
                        <p><%= truncate(strip_tags(post.body), length: 360) %></p>
                    </div>
                </div>
              </div>
            </li>
      <% end %>
    </ul>
    <%= paginate @tags %>
</div>

tag.rb

lass Tag < ActiveRecord::Base
    has_many :taggings
    has_many :posts, through: :taggings

    paginates_per 2
end

tags_controller.rb

class TagsController < ApplicationController
    def show
    @tag = Tag.find(params[:id]).page(params[:page])
    end
end

我已经尝试了所有我能想到的东西。 Kaminari使用的例子是

tag = Tag.order(:name).page(params[:page])

但是这不起作用并且返回一个no方法&#34; post&#34;错误。我尝试对帖子模型进行分页,但这并不起作用。

如果我删除任何分页参考,它会在代码页上正确显示所有帖子。

感谢您的任何建议

1 个答案:

答案 0 :(得分:1)

我不确定你想要什么分页?标签或帖子?在您的代码中,您想要对“@tags”进行分页,但是您从不定义“@tags”。

@tag = Tag.find(params[:id]) 
@posts = @tag.posts.page(params[:page])