模板ruby string-eval bug?

时间:2012-02-19 05:29:16

标签: jquery ruby-on-rails ruby jquery-ui

以下A和B应该是等效的,但只有版本A可以使用。铁轨串评估似乎破裂或发生得太早/晚或某事。有什么想法吗?

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

1 个答案:

答案 0 :(得分:3)

默认情况下,Rails3 + HTML会对<%= ... %>中的内容进行编码。这意味着您的 B 会像这样出现:

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

这在JavaScript中毫无意义。你想要其中一个:

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

其中任何一个都会为您提供您期望的JavaScript:

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