2012-10-30 105 views
40

我最近看到這個,覺得很有意思。但我真的不明白它的作用?<%== %>在軌erb中做什麼?

Ex。我有一個Rails應用程序,我想引導一些JSON,所以我不必再提出第二個請求。通常我會寫這樣的東西。

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

我發送消息rawhtml_safe或JSON將HTML逃脫,因而不能正確解析。但是,這似乎也起作用。

<%== @model.to_json %>

但我無法找到任何文件。

有誰知道這是幹什麼的?即與撥打html_safe還是raw完全相同?或者還有更多嗎?

+0

可能的重複[有什麼區別<% code %>和<%= code %> Rails erb?](http://stackoverflow.com/questions/5361401/whats-the-difference-between-code-and-code-in-rails-erb) –

+6

它根本不是上述的重複。我從來沒有見過<%==順便說一句,所以很高興學習新的東西......好的問題。 –

回答

48

<%==相當於raw

Ruby on Rails Guide

要插入一些逐字使用raw幫手,而不是調用 html_safe

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

,或者等價地,使用<%==

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

看着導軌,不知道我是如何錯過了?謝謝! – mwoods79

+0

這可以用於插值? ''#{@ something}

在這裏

「'或者你會在字符串的末尾使用html_safe嗎? – Jordan

10

Rails實際上使用Erubis而不是ERB,它支持各種其他的東西。

<%==正是如您所願,但:It emits the value unescaped

+0

是不是,Rails使用Erubis? –

+1

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

+0

如果你添加一些東西來解決我原來的問題,「它是完全一樣的調用html_safe還是raw?還是還有更多?「。我會接受這個答案。當我第一次讀這本書的時候,我認爲「很棒」,並且幾乎接受了它。 – mwoods79