Сортировка по вычисленному значению с помощью Rails - PullRequest
1 голос
/ 27 августа 2010

В настоящее время я сортирую таблицу данных в приложении Rails 2.3 по различным столбцам с помощью плагина sortable_column_headers. Это прекрасно работает, и я могу сортировать столбцы в текущей модели или легко в связанных моделях.

Хотя моя проблема в том, что один столбец в таблице является вычисленным значением (это результат деления одного столбца на другой), и теперь мне нужно сделать возможным сортировку по данным этого вычисленного столбца. Расчет выполняется, когда таблица отображается следующим образом:

<td><%= market_cr(employee.salary_annual,employee.payscale.market_midpoint) %></td>

И market_cr это:

def market_cr(current_salary,market_mp)
number_to_percentage((current_salary/market_mp)*100, :precision => 1)

конец

Как я могу сделать этот столбец сортируемым, как я делал с другими, например:

<th><%= link_to 'Market CR', sort_param('listing', :model => Employee, :field => 'market_cr'), :id => 'market_cr' %></th>

Спасибо!

1 Ответ

0 голосов
/ 27 августа 2010

Я не знаком с sortable_column_headers, но, похоже, этого можно добиться, переместив метод market_cr из помощника вида в модель сотрудника. Примерно так, но вам может понадобиться помассировать его, чтобы оно выглядело как процент. Это, вероятно, лучшее решение, если вы тоже проводите модульное тестирование.

class Employee < ActiveRecord::Base
  ....

  def market_cr
   ((salary_annual/payscale.market_midpoint)*100).round(1)
  end

  ....
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...