Add order on topic index.
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
class CommunitiesController < ApplicationController
|
||||
|
||||
before_action :set_community, :load_topics, only: :show
|
||||
before_action :set_order, :set_community, :load_topics, only: :show
|
||||
|
||||
has_orders %w{newest most_commented oldest}, only: :show
|
||||
|
||||
skip_authorization_check
|
||||
|
||||
@@ -9,11 +11,15 @@ class CommunitiesController < ApplicationController
|
||||
|
||||
private
|
||||
|
||||
def set_order
|
||||
@order = params[:order].present? ? params[:order] : "newest"
|
||||
end
|
||||
|
||||
def set_community
|
||||
@community = Community.find(params[:id])
|
||||
end
|
||||
|
||||
def load_topics
|
||||
@topics = @community.topics.page(params[:page])
|
||||
@topics = @community.topics.send("sort_by_#{@order}").page(params[:page])
|
||||
end
|
||||
end
|
||||
|
||||
@@ -9,6 +9,10 @@ class Topic < ActiveRecord::Base
|
||||
|
||||
after_create :associate_comment
|
||||
|
||||
scope :sort_by_newest, -> { order(created_at: :desc) }
|
||||
scope :sort_by_oldest, -> { order(created_at: :asc) }
|
||||
scope :sort_by_most_commented, -> { reorder(comments_count: :desc) }
|
||||
|
||||
private
|
||||
|
||||
def associate_comment
|
||||
|
||||
@@ -1,22 +1,6 @@
|
||||
<div class="row column">
|
||||
<div class="order">
|
||||
<div class="wide-order-selector small-12 medium-8">
|
||||
<form>
|
||||
<div class="small-12 medium-8 float-left">
|
||||
<label for="order-selector-participation">
|
||||
<div class="order">
|
||||
Ordenar por:
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="small-12 medium-4 float-left">
|
||||
<select class="js-location-changer js-order-selector select-order">
|
||||
<option>Value 1</option>
|
||||
<option>Value 2</option>
|
||||
</select>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<%= render 'shared/wide_order_selector', i18n_namespace: "topics" %>
|
||||
</div>
|
||||
|
||||
<% if topics.any? %>
|
||||
|
||||
Reference in New Issue
Block a user