2012-02-19 65 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