2010-07-31 20 views
0

Il s'agit d'un ancien code de rapport de réécriture pour les applications Rails. Vous devez créer la requête, les routes, l'action et la vue ... (oui, je suis fainéant) Y at-il quelque chose qui créerait un rapport complet en moins d'étapes?Existe-t-il un plugin de rapport ridiculement facile pour les rails?

Voici ce que je pense serait idéal:

Vous avez un dossier de rapport qui a un nom, le code de requête (en Ruby ou SQL), et peut-être quelques options de rapport comme ceci:

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

ce stockerait un enregistrement, et vous feriez dynamiquement obtenir un itinéraire:

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

et le record du rapport récupérerait toutes les colonnes de la requête (qui se trouve être tout colonnes dans la table des personnes dans ce cas), et générer une vue avec les données comme si (faites semblant que c'est 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 | 

Quelqu'un sait d'un plug-in qui permet d'atteindre au moins une partie de cela? Par ailleurs, la gemme Ruport sera probablement incompatible avec Rails 3, et pour être honnête, c'est un peu compliqué.

+0

Est-ce que quelqu'un pense même que cela pourrait être une bonne idée? (ou une idée horrible?) – btelles

Répondre

3

est ici quelque chose qui nous arrive presque là:

http://github.com/wayneeseguin/dynamic_reports

Dans Dynamic Reports, vous créez une classe de rapport qui spécifie quelques paramètres, et ajoutez une action de contrôleur pour spécifier la requête à utiliser pour les résultats.

Voici l'exemple sur le site:

# 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 

Les documents ne disent rien sur les itinéraires, donc je suppose que nous devons créer nous-mêmes ceux-ci.

Il vous permet également d'utiliser n'importe quelle mise en page ou des modèles personnalisés que vous voulez, et il génère des graphiques en utilisant l'API Google Maps.

+0

Doh! Je suppose que c'est aussi proche que je vais l'avoir. – btelles

+0

C'était un bon plugin, mais il n'est pas supporté aujourd'hui, le dernier commit datait de 4 ans. – rderoldan1

0

Dans mes projets, j'utilise le gem sac à dos, il est incroyable, il permet à votre utilisateur de faire des requêtes personnalisées, et vous pouvez personnaliser les attributs disponibles.

Jetez un oeil