Forum: Italian Ruby user group Uniformare risposte JSON in Rails

Ecba128cadb86282c9bc475d3323ec1f?d=identicon&s=25 Rocco Galluzzo (rocco_g)
on 2014-06-03 13:06
Ciao a tutti,

Ho un'applicazione Rails con molte richieste Ajax/Json che vorrei
uniformare, cerco qualcosa tipo le "entity" di grape.

La "rails way" in questi casi? Ho visto roar ma non mi convince molto.

Esperienze a riguardo? Alternative?
7de465f222e6a9c7fe658e370d0bfe05?d=identicon&s=25 Paolo Montrasio (pmontrasio)
on 2014-06-05 11:13
Non mi pare che ci sia un vero e proprio rails way per queste cose.
Qualche mese fa ho dovuto fare un backend rails che mandava risposte
jsonp ad un frontend angular e ho usato codice del tipo

  format.json {
    @model = Model.where(...)
  }

e viste costruite con jbuilder, più la gemma jpbuilder che ne converte
l'output in jsonp. Una vista è del tipo

  json.array! @model do |model|
    json.id  @model.id
    ...
  end

Sono viste, per cui se ci sono parti ricorrenti le puoi generare con
helper o qualsiasi altra tecnica standard.

Nel tuo caso chiedi di json, ma chi dovesse usare jsonp faccia
attenzione a questo bug ancora aperto
https://github.com/rails/rails/issues/15081

Il mio workaround è consistito nell'aggiungere

        response.headers["Content-Type"] = "application/javascript"

nel blocco delle format.json.
7de465f222e6a9c7fe658e370d0bfe05?d=identicon&s=25 Paolo Montrasio (pmontrasio)
on 2014-06-05 11:15
Rileggendomi ho scoperto un errore.
La vista giusta è

  json.array! @model do |model|
    json.id  model.id
    ...
  end

senza la @ prima di model.id

@model è un array ritornato dalla Model.where (ok, non esattamente un
array, ma ci siamo intesi). Avrei fatto meglio a dargli un nome plurale
:-)
Please log in before posting. Registration is free and takes only a minute.
Existing account

NEW: Do you have a Google/GoogleMail, Yahoo or Facebook account? No registration required!
Log in with Google account | Log in with Yahoo account | Log in with Facebook account
No account? Register here.