Fabriquer un json à partir de plusieurs models différents sous rails 3

Bonjour,

J’ai été confronté à un problème lors de la fabrication d’un json pour une réponse ajax. J’envoie une requête ajax à cette action (avec deux paramètre, country_id et destination_id) :

  def info
    id = params[:country_id]
    @country = Country.find_by_id!(params[:country_id])
    @destination = Destination.find_by_id!(params[:destination_id])
  end

Je veux donc faire un json contenant ma destination et mon pays :

  render :json => ['country' => @country, 'count' => @country.hotels.count, 'destination' => @destination], :include=> [:regions]

Et là grosse erreur :

undefined method `macro' for nil:NilClass

Celui vient du faire qu’il essaie d’inclure les régions pour ma destination alors qu’elle n’en a pas. La solution est d’encoder en json puis de décoder afin de ne pas échapper le json :

render :json => ['country' => @country, 'count' => @country.hotels.count, 'destination' => ActiveSupport::JSON.decode(@destination.to_json) ], :include=> [:regions]

Voilà pour l’astuce json de ruby