Ruby on Rails 4项目。如何显示所有类别的所有帖子?

时间:2014-01-20 12:32:15

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

我想在我博客的索引中显示所有类别的最后10篇帖子。

我在views / categories / index.html.erb文件中有这个,但它不起作用:

  <% @posts.limit(10).each do |post| %>
    <div class="single_post group">

        <div class="post_details">
            <h2><%= link_to post.title, category_post_path(@category, post) %></h2>
          <%= image_tag post.image(:header), class: "post_image" %>
          <p><%= post.body %></p>
        </div>

    </div>
  <% end %>

这是我的categories_controller.rb文件:

  def index
  @category = Category.all

    @posts = @category.posts.order("created_at desc")
  end

我做错了什么?

2 个答案:

答案 0 :(得分:1)

@posts = Post.order('created_at desc').limit(10)

答案 1 :(得分:0)

您的问题在于categories_controller#index中的关联:
在那里,您定义了一个包含所有类别的实例变量@category 当您在posts上致电@category时,这将无效,因为您有一个ActiveRelation元素,respond_to posts方法定义了has_many 1}}设置。

正如@ arun15thmay建议的那样,将您的查询变为

@posts = Post.order('created_at desc').limit(10)

使用该查询,您可以避免处理所有类别并具有相同的效果,即最后10个帖子(无论它们来自哪个类别)都会被选中。