2012-10-30 8 views
40

L'ho visto di recente, ho pensato che fosse interessante. Ma non capisco davvero cosa fa?Che cosa fa <%== %> in rails erb?

Es. Ho una app per i binari e voglio eseguire il boot di alcuni json, in modo da non dover fare una seconda richiesta. Normalmente scriverei qualcosa del genere.

<%= raw @model.to_json %> o <%= @model.to_json.html_safe %>

devo inviare il messaggio raw o html_safe o JSON sarà html scappati e quindi non analizzati correttamente. Tuttavia, anche questo sembra funzionare.

<%== @model.to_json %>

Ma non riesco a trovare alcuna documentazione.

Qualcuno sa cosa fa esattamente? Esattamente lo stesso che si chiama html_safe o raw? O c'è dell'altro?

+0

possibile duplicato di [Qual è la differenza tra <% code %> e <%= code %> in Rails erb?] (Http://stackoverflow.com/questions/5361401/whats-the-difference-between-code-and-code-in-rails-erb) –

+6

non è affatto un duplicato di quanto sopra. Non ho mai visto <% == btw quindi è bello imparare qualcosa di nuovo .. bella domanda. –

risposta

48

<%== è equivalente a raw.

Dal Ruby on Rails Guide:

Per inserire qualcosa testualmente utilizzare il raw aiutante piuttosto che chiamare html_safe:

<%= raw @cms.current_template %> <%# inserts @cms.current_template as is %> 

o, equivalentemente, utilizzare <%==:

<%== @cms.current_template %> <%# inserts @cms.current_template as is %> 
+0

Guardate le guide dei binari, non so come mi sono perso? Grazie! – mwoods79

+0

può essere utilizzato in interpolazione? '" # {@ something}

È qui

"' oppure useresti html_safe alla fine della stringa? – Jordan

10

Rails utilizza effettivamente Erubis anziché ERB, che supporta una varietà di altre cose.

<%== è esattamente come ci si aspetta, però: It emits the value unescaped

+0

È vero, Rails usa Erubis? –

+1

https://github.com/rails/rails/blob/master/actionpack/lib/action_view/template/handlers/erb.rb#L59 – Nevir

+0

Se aggiungi qualcosa per rispondere alla mia domanda originale, "È esattamente lo stesso di chiamare html_safe o raw? O c'è dell'altro? ". Lo accetterò come risposta. Quando ho letto per la prima volta ho pensato "fantastico", e quasi l'ho accettato allora. – mwoods79