Ho provato di tutto. Ogni combinazione degli helper raw
, html_safe
to_json
compresi alcuni tentativi con ::JSON.encode
e CGI.unescape
. Il problema è che indipendentemente da ciò che faccio, non riesco a stampare JSON ben formato in una vista. È sempre in codice HTML.Stampa JSON valida, senza escape in una vista con Rails
Ecco il codice a mio avviso:
var campaignData<%= "=" + (raw @campaign.to_json) if @campaign %>;
Nel mio caso, è sempre le virgolette che sono sfuggiti come ". Vorrei solo fare un gsub sulle virgolette, ma questa è una terribile soluzione a ciò che IMO dovrebbe essere un caso d'uso molto semplice e ben documentato.
Questo non è sicuro. Cosa succede se il json contiene una stringa con un numero minore di? Se lo metti in un tag script, qualcuno può iniettare un tag di script di chiusura e avviarne uno nuovo con un codice arbitrario. È necessario avvolgere la stringa json in 'json_escape'. Tuttavia, tale funzione è stata interrotta fino a poco tempo fa (rotaie 4.1). – Kelvin
Sì, ho anche scoperto che questo non ha funzionato per me quando @campaign == "" – hrdwdmrbl
THANKS A TON !!! –