2012-10-30 20 views
40

Widziałem to niedawno, myślałem, że to interesujące. Ale tak naprawdę nie rozumiem, co robi?Co robi <%== %> w przypadku erb?

Przykł. Mam aplikację szyny i chcę uruchomić trochę jsona, więc nie muszę wysyłać drugiej prośby. Normalnie napisałbym coś takiego.

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

muszę wysłać wiadomość raw lub html_safe lub json będzie html uciekł, a tym samym nie analizowany poprawnie. Wydaje się jednak, że to też działa.

<%== @model.to_json %>

Ale nie mogę znaleźć żadnej dokumentacji.

Czy ktoś wie, co to dokładnie robi? tj. Czy to jest dokładnie to samo co wywołanie html_safe lub raw? Czy może jest coś więcej?

+0

możliwy duplikat [Jaka jest różnica między <% code %> a <%= code %> w Rails erb?] (Http://stackoverflow.com/questions/5361401/whats-the-difference-between-code-and-code-in-rails-erb) –

+6

to wcale nie jest duplikat powyższego. Nigdy nie widziałem <% == btw, więc fajnie jest nauczyć się czegoś nowego ... dobrego pytania. –

Odpowiedz

48

<%== jest równoważna raw.

Z Ruby on Rails Guide:

Aby wstawić coś verbatim użyć raw pomocnika zamiast nazywając html_safe:

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

lub, równoważnie, należy <%==:

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

Spojrzałem na prowadnice szyn, nie wiem, jak to przegapiłem? Dzięki! – mwoods79

+0

można to wykorzystać w interpolacji? '" # {@ something}

Czy jest tutaj

"" czy po prostu użyłbyś html_safe na końcu łańcucha? – Jordan

10

Szyny aktualnie używają Erubis zamiast ERB, który obsługuje wiele innych rzeczy.

<%== jest dokładnie tak, jak można się spodziewać, choć: It emits the value unescaped

+0

Czy to prawda, Rails używa Erubis? –

+1

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

+0

Jeśli dodasz coś do mojego pierwotnego pytania: "Czy to jest dokładnie to samo, co dzwoniąc html_safe lub raw? Czy może jest coś więcej? ". Przyjmę to jako odpowiedź. Kiedy pierwszy raz to przeczytałem, pomyślałem "niesamowicie" i prawie wtedy to zaakceptowałem. – mwoods79