Rails:在嵌套视图中订购商品

时间:2018-03-02 17:43:12

标签: ruby-on-rails ruby-on-rails-5

我有一个名为Post的模型,属于另一个名为Group的模型。因此,目前用户可以导航到组并创建帖子,帖子显示在正确的视图下。但是,我正在试图弄清楚如何使帖子按降序显示,以便最新的帖子在该特定组的顶部。

这是在posts_controller中。当我去... / groups /:id / posts时,它会正确地按降序排列它们但是我需要帖子显示降序... / groups /:id

   # GET /groups/:group_id/posts
    def index
      @posts = @group.posts.order("created_at desc")
    end

这是在groups / show.html.erb视图中。有没有办法在@group.posts.each上添加降序?

      <%= link_to 'New Post', new_group_post_path(@group.id) %>  
      <!-- gets posts for the group -->
      <div class="row">
          <% @group.posts.each do |post| %>
        <div class="col-lg-12">
          <div class="card bottom-pad">
            <div class="card-body">
              <h4 class="card-title"><%= link_to post.title, group_post_path(@group, post), class: "text-primary" %></h4>
              <p class="card-text"><%= truncate(post.content, length: 500)   %><br><br>
               <%= post.user.last_name %>
              </p>
            </div>
            <div class="card-footer">
              <small class="text-muted"><%= time_ago_in_words(post.created_at) + " ago" %></small>
            </div>
          </div>
          <br><br>
        </div><!--./col-->
        <% end %><!--./@group.posts.each-->
      </div><!--./row-->   

1 个答案:

答案 0 :(得分:3)

您可以在show.html.erb中按照以下顺序进行排序:

<%= link_to 'New Post', new_group_post_path(@group.id) %>  
<!-- gets posts for the group -->
<div class="row">
  <% @group.posts.order(created_at: :desc).each do |post| %>
    <div class="col-lg-12">
      <div class="card bottom-pad">
        <div class="card-body">
          <h4 class="card-title"><%= link_to post.title, group_post_path(@group, post), class: "text-primary" %></h4>
          <p class="card-text"><%= truncate(post.content, length: 500)   %><br><br>
           <%= post.user.last_name %>
          </p>
        </div>
        <div class="card-footer">
          <small class="text-muted"><%= time_ago_in_words(post.created_at) + " ago" %></small>
        </div>
      </div>
      <br><br>
    </div><!--./col-->
  <% end %><!--./@group.posts.each-->
</div><!--./row-->