使用searchlogic对关联模型的属性进行排序

时间:2011-01-27 14:26:46

标签: ruby-on-rails

使用searchlogic进行搜索,分页和排序。我的问题在于排序。

我有2个模特 - 提交和人。

class Submission < ActiveRecord::Base
belongs_to :person
end


class Person < ActiveRecord::Base
 has_many :submissions 
end

在我的index.html.erb(对于提交控制器)中,我有以下代码进行排序:

<tr>
    <th> <%= order @search, :by => :SUB_ID, :as => "Submission Id" %></th>
    <th> <%= order @search, :by => :SUB_ENTRY_DATE, :as => "Creation Date" %> </th>
    <th> <%= order @search, :by => :SUB_TYPE, :as => "Submission Type" %> </th>
    <th> <%= order @search, :by => :PER_NAME??, :as => "Submitter Name" %> </th>
</tr>

<% @submissions.each do |submission| %>
  <tr>
    <td><%=h submission.SUB_ID %></td>
    <td><%=h submission.SUB_ENTRY_DATE %></td>
    <td><%=h submission.SUB_TYPE %></td>
    <td><%=h submission.person.PER_NAME %></td>
  </tr>
<% end %>

对前3列进行排序是有效的,因为这些字段在提交表中找到,但我不知道如何对per_name列进行排序。

非常感谢帮助我。

1 个答案:

答案 0 :(得分:2)

Searchlogic期望在订购时看起来像这样的方法(例如):

Submission.ascend_by_sub_type

使用关联时,您需要在列名前加上关联名称,因此最终应该是:

Submission.ascend_by_person_per_name

尝试在订单帮助程序中使用:by => :person_per_name。这应该产生正确的链接。