2012-02-19 7 views
2

以下のAとBは同等である必要がありますが、バージョンAのみが動作します。レール文字列の評価が壊れているか、早すぎる/遅すぎているように見えます。何か案は?テンプレートのruby string-evalのバグ?

<% 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

+0

またはそれはむしろ断続的に動作します - 本当に奇妙な – Mark

答えて

3

Rails3 + HTMLはコンテンツをデフォルトで<%= ... %>にエンコードします。

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

それはJavaScriptでは意味がありません:それはあなたのBは次のように出てくることを意味します。あなたはこれらのいずれかの希望:

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

それらのどちらかが、あなたが期待しているJavaScriptを与える:

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

生の動作していないバージョン... – Mark

+0

...第2のバージョン – Mark

+0

@マーク:「うまくいかない」とはどういう意味ですか?あなたはそのページのソースを見ましたか? –

関連する問題