/artists: sort autocomplete by post count.
* Add search[order]=post_count param to /artists. * Make autocomplete do a prefix match ordered by post count, so that it works the same way that tag autocomplete does elsewhere.
This commit is contained in:
@@ -53,8 +53,9 @@
|
|||||||
$.ajax({
|
$.ajax({
|
||||||
url: "/artists.json",
|
url: "/artists.json",
|
||||||
data: {
|
data: {
|
||||||
"search[name]": "*" + req.term + "*",
|
"search[name]": req.term + "*",
|
||||||
"search[is_active]": true,
|
"search[is_active]": true,
|
||||||
|
"search[order]": "post_count",
|
||||||
"limit": 10
|
"limit": 10
|
||||||
},
|
},
|
||||||
method: "get",
|
method: "get",
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ class ArtistsController < ApplicationController
|
|||||||
|
|
||||||
def index
|
def index
|
||||||
search_params = params[:search].present? ? params[:search] : params
|
search_params = params[:search].present? ? params[:search] : params
|
||||||
@artists = Artist.includes(:urls).search(search_params).order("id desc").paginate(params[:page], :limit => params[:limit], :search_count => params[:search])
|
@artists = Artist.includes(:urls).search(search_params).paginate(params[:page], :limit => params[:limit], :search_count => params[:search])
|
||||||
respond_with(@artists) do |format|
|
respond_with(@artists) do |format|
|
||||||
format.xml do
|
format.xml do
|
||||||
render :xml => @artists.to_xml(:include => [:urls], :root => "artists")
|
render :xml => @artists.to_xml(:include => [:urls], :root => "artists")
|
||||||
|
|||||||
@@ -419,11 +419,13 @@ class Artist < ActiveRecord::Base
|
|||||||
params[:order] ||= params.delete(:sort)
|
params[:order] ||= params.delete(:sort)
|
||||||
case params[:order]
|
case params[:order]
|
||||||
when "name"
|
when "name"
|
||||||
q = q.reorder("artists.name")
|
q = q.order("artists.name")
|
||||||
when "updated_at"
|
when "updated_at"
|
||||||
q = q.reorder("artists.updated_at desc")
|
q = q.order("artists.updated_at desc")
|
||||||
|
when "post_count"
|
||||||
|
q = q.joins(:tag).order("tags.post_count desc")
|
||||||
else
|
else
|
||||||
q = q.reorder("artists.id desc")
|
q = q.order("artists.id desc")
|
||||||
end
|
end
|
||||||
|
|
||||||
if params[:is_active] == "true"
|
if params[:is_active] == "true"
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
<th><label for="search_order">Order</label>
|
<th><label for="search_order">Order</label>
|
||||||
<td>
|
<td>
|
||||||
<div class="input">
|
<div class="input">
|
||||||
<%= select "search", "order", [["Recently created", "created_at"], ["Last updated", "updated_at"], ["Name", "name"]], :selected => params[:search][:order] %>
|
<%= select "search", "order", [["Recently created", "created_at"], ["Last updated", "updated_at"], ["Name", "name"], ["Post count", "post_count"]], :selected => params[:search][:order] %>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|||||||
Reference in New Issue
Block a user