Pergunta

Existe uma maneira fácil de retornar dados para clientes de serviços web em JSON usando Rails?

Foi útil?

Solução

O recurso Rails fornece uma interface RESTful para o seu modelo.Vamos ver.

Modelo

class Contact < ActiveRecord::Base
  ...
end

Rotas

map.resources :contacts

Controlador

class ContactsController < ApplicationController
  ...
  def show
    @contact = Contact.find(params[:id]

    respond_to do |format|
      format.html 
      format.xml {render :xml => @contact}
      format.js  {render :json => @contact.json}
    end
  end
  ...
end

Portanto, isso fornece interfaces de API sem a necessidade de definir métodos especiais para obter o tipo de resposta necessária

Por exemplo.

/contacts/1 # Responds with regular html page

/contacts/1.xml # Responds with xml output of Contact.find(1) and its attributes

/contacts/1.js # Responds with json output of Contact.find(1) and its attributes

Outras dicas

Rails monkeycorrige a maioria das coisas que você gostaria de ter #to_json método.

Pensando bem, você pode fazer isso para hashes, arrays e objetos ActiveRecord, que devem cobrir cerca de 95% dos casos de uso que você deseja.Se você tiver seus próprios objetos personalizados, é trivial escrever seus próprios to_json método para eles, que pode simplesmente armazenar dados em um hash e, em seguida, retornar o hash jsonizado.

Existe um plugin que faz exatamente isso,http://blog.labnotes.org/2007/12/11/json_request-handling-json-request-in-rails-20/

E pelo que entendi essa funcionalidade já está no Rails.Mas vá ver aquela postagem do blog, há exemplos de código e explicações.

ActiveRecord também fornece métodos para interagir com JSON.Para criar JSON a partir de um objeto AR, basta chamar object.to_json.PARA criar um objeto AR a partir de JSON, você deve ser capaz de criar um novo objeto AR e então chamar object.from_json.tanto quanto eu entendi, mas isso não funcionou para mim.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top