2013-10-15 16 views
0

我在紅寶石視圖文件中看到了標籤<%=j some-variable %>,我想知道是否有人能告訴我它的代表j是什麼意思?我知道<%= %>用於打印出紅寶石,<% %>用於在視圖中使用ruby代碼。'ruby view'中的'<%=j %>'標籤的含義

回答

5

在Ruby on Rails的看法,j()是別名爲escape_javascript()

轉義回車符和JavaScript段的單引號和雙引號。

例如,當您想渲染另一個ERB模板並將該輸出用作JS函數的參數時,通常用於DOM操作。

如果您正在使用jQuery,你可能會創建一個新的記錄後,在你的JS迴應是這樣的:

$('ul#items').append('<%= j render(resource) %>'); 

這會使相應部分的資源,逃避的結果,使得它可以用作Javascript字符串,將該轉義字符串用引號括起來,然後將最後一個字符串附加到DOM節點。

更新:

(這是從我的討論意見推導出其他的答案之一。)

很多Ruby開發人員編寫j旁邊的<%=,沒有任何分離空白。有些編寫<%=j render 'something' %>,而通常至少包含內部方法調用參數,如下所示:puts some_method('bar')

這是在Rails開始自動轉義字符串之前用於轉義HTML的h別名的同一故事。

2

在這個例子中,j是方法,some-variable是它的參數。 調用方法後,此調用的結果將轉換爲字符串並插入到您的視圖中。

更確切地說,jescape_javascript方法的別名,它可以轉義JavaScript字符。

+0

Ruby的鬆散無支架語法可能會將用於C,Java,JavaScript,Perl或Python的人員嚴格要求嚴格要求。 – tadman

+0

我非常懷疑這是一種方法 – Kitty1911

+1

@ Kitty1911你爲什麼會懷疑?它看起來*完全像*在Ruby中的方法調用。這很可能是一個名爲'j'的輔助方法。記住'j foo'和'j(foo)'是等價的。 – tadman

3

我敢肯定這是簡寫escape_javascript

<%=j some-variable %> => <%= escape_javascript some-variable %> 

將設法找到一個源出於此


這裏的source。請注意,這僅在Rails 4.0中可用。

所以我不知道,其實 - 在文檔的背景使它看起來像需要與render連接使用它...

$('some_element').replaceWith('<%=j render 'some/element_template' %>'); 
+0

javascript_escaped到底做了什麼? – Kitty1911

+1

http://api.rubyonrails.org/classes/ActionView/Helpers/JavaScriptHelper.html#method-i-escape_javascript – AndyV

+0

它可能具有在所討論的對象上調用'to_json'的效果,因此它可以用作參數一個JavaScript函數。 – tadman