E stou trabalhando em um alguns projetos em Ruby on Rails, e nestes projetos é utilizado o excelente framework ExtJS, principalmente para formulários e grids.

E uma coisinha um pouco chata ao trabalhar nos controllers era na hora de elaborar o json para envio ao Grid. Nada muito grave, mas só fica aquela sensação de código que pode ser facilmente melhorado.

Veja, por exemplo, o código do tutorial de Grid com Rails disponível no site do Extjs:

Rails Controller Code (movie_controller.rb)
return_data = Hash.new()      
        return_data[:Total] = @movie_pages.item_count      
       return_data[:Movies] = @movies.collect{|u| {:id=>u.id, 
                                            :title=>u.title,
                                            :plot=>u.plot, 
                                            :date=>u.date, 
                                            :genre=>u.genre, 
                                            :mpaa=>u.mpaa, 
                                            :directed_by=>u.directed_by} }      
        render :text=>return_data.to_json, :layout=>false
Observe que um novo hash será criado com os atributos de cada um dos registros, fica um pouco repetitivo.

E hoje tomei conhecimento do plugin JSONifier, onde com eles o código acima pode ficar um pouco mais enxuto. Veja:

return_data = Hash.new()      
        return_data[:Total] = @movie_pages.item_count      
        return_data[:Movies] = @movies.collect{|u| u.to_json} 
        render :text=>return_data.to_json, :layout=>false

ou caso queira especificar quais atributos serão utilizados:

return_data[:Movies] = @movies.collect{|u| u.to_json(:only=>[:title,:plot,:date,:genre,:mpaa,:directed_by])} 
 ou
return_data[:Movies] = @movies.collect{|u| u.to_json(:except=>[:date,:directed_by])}

Tá aí, mais um plugin simples e útil.

Link Original: Better JSON output from Rails with the Jsonifier plugin

Sorry, comments are closed for this article.

back to top

micro theme by seaofclouds, and powered with Mephisto

Clicky Web Analytics