2012-03-05 38 views
0

我在应用程序中使用ThinkingSphinx,现在我没有对结果进行任何类型的订单。不过,我希望通过链接可以让用户点击页面上的链接,并通过URL将其传递到“刷新”页面,并按照现在订购的结果进行刷新。ThinkingSphinx通过URL订购参数

在.search参数中,我试着做:order => params[:o]然后在URL中传递o=columnname,但似乎没有工作。

只是要注意,当我硬编码的顺序它工作正常,我没有索引/使一个数据库列排序的麻烦。我只想通过URL参数来实现它,结果可以按顺序显示。

回答

1

根据Sphinx documentation,您想要用于排序的字段必须标记为可排序。与has定义的属性没有被标记,因为所有属性排序:

class Article 
    .. 
    define_index do 
    indexes title, :sortable => true 
    indexes author(:name), :as => :author, :sortable => true 
    .. 
    end 

那么可以使用:order:sort_mode参数来定义排序顺序:

sort_order = params[:o] 
Article.search "pancakes", :order => sort_order, :sort_mode => :desc