/ 20.Jul.2007
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
micro theme by seaofclouds, and powered with Mephisto
Sorry, comments are closed for this article.