2012-02-19 63 views
2

在下面的A和B應該是等效的,但只有版本A的作品。鋼軌評估似乎已經中斷或者發生得太早/晚了,或者發生了什麼。有任何想法嗎?模板ruby字符串評估錯誤?

<% content_for :main do %> 

<script type="text/javascript"> 

    $(function(){ 

    //$("#users-new").dialog();   //A 

    $(<%= "\"#users-new\"" %>).dialog(); //B 

    }); 

</script> 

<div id="users-new"> 
    testing 
</div> 

<% end %> 
+0

而真正奇怪的是,以下的作品,但它不應該: $(<%=「users-new」%>)。dialog(); – Mark 2012-02-19 05:43:17

+0

或更確切地說它是間歇性地工作的 - 真正離奇的 – Mark 2012-02-19 05:45:47

回答

3

默認情況下,Rails3 + HTML編碼內容<%= ... %>。這意味着,你出來是這樣的:

$(&quot;#users-new&quot;).dialog(); 

這使得在JavaScript中沒有任何意義。你想其中的一個:

$(<%= raw "\"#users-new\"" %>).dialog(); 
$(<%= "\"#users-new\"".html_safe %>).dialog(); 

無論是那些會給你,你期待的JavaScript:

$("#users-new").dialog(); 
+0

原始版本沒有工作... – Mark 2012-02-19 05:51:37

+0

...第二個版本也沒有 – Mark 2012-02-19 05:52:33

+0

@Mark:什麼「不工作」是什麼意思?你看過網頁的來源嗎? – 2012-02-19 05:53:12