Есть ли смехотворно простой плагин для отчетов по рельсам? - PullRequest
0 голосов
/ 31 июля 2010

Устаревает переписывание кода отчета для приложений Rails. Я должен создать запрос, маршруты, действие и представление ... (да, я ленив) Есть ли что-нибудь, что могло бы создать полный отчет за еще меньшее количество шагов?

Вот что я думаю, было бы идеально:

У вас есть запись отчета с именем, кодом запроса (на Ruby или SQL) и, возможно, некоторыми параметрами отчета, например:

Report.create(:name  => "With last name 'smith'",
              :query => "Person.where( :last_name => 'smith' )")

Это сохранит запись, и вы получите динамически маршрут:

method  :  report_with_last_name_smith_path
http    :  GET  
url     :  /report_with_last_name_smith
options :   {
              :controller => 'reports', 
              :action => 'with_last_name_smith'
            }

И запись отчета будет извлекать все столбцы из запроса (который, как правило, все столбцы в таблице people в этом случае) и сгенерируйте представление с такими данными (представьте, что это html):

 | First Name | Last Name | Date of Birth | Sex    | 
 | Bob        | Smith     | 03-13-2000    | Male   | 
 | Lisa       | Smith     | 03-23-1980    | Female | 
 | Jack       | Smith     | 03-13-1975    | Male   | 

Кто-нибудь знает плагин, который помогает достичь хотя бы части этого?

Кстати, камень Ruport, скорее всего, будет несовместим с Rails 3, и, честно говоря, он немного громоздкий.

Ответы [ 2 ]

3 голосов
/ 02 августа 2010

Вот кое-что, что приводит нас почти к этому:

http://github.com/wayneeseguin/dynamic_reports

В динамических отчетах вы создаете класс отчета, который задает несколько параметров, и добавляете действие контроллера, чтобы задать запрос дляиспользуйте для результатов.

Вот пример на сайте:

# In some class that you create
class OrdersReport < DynamicReports::Report
  title "Orders Report"
  subtitle "All orders recorded in database"
  columns :total, :created_at

  link :total, '/report/item_sales?id={id}'   # =>  Will substitute ID for the value of ID associated with that record
end

# In any controller of your choosing:
def orders
  @orders = Order.find(:all, :limit => 25)
  render :text => OrdersReport.on(@orders).to_html, :layout => "application"
end

Документы ничего не говорят о маршрутах, поэтому я предполагаю, что мы должны создать их сами.

Он также позволяет вам использовать любой макет или пользовательские шаблоны и генерирует диаграммы с помощью API диаграмм Google.

0 голосов
/ 19 августа 2013

В своих проектах я использую Ransack Gem, это удивительно, это позволяет вашему пользователю делать пользовательские запросы, а вы можете настроить доступные атрибуты.

Взгляните

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