以下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 %>
答案 0 :(得分:3)
默认情况下,Rails3 + HTML会对<%= ... %>
中的内容进行编码。这意味着您的 B 会像这样出现:
$("#users-new").dialog();
这在JavaScript中毫无意义。你想要其中一个:
$(<%= raw "\"#users-new\"" %>).dialog();
$(<%= "\"#users-new\"".html_safe %>).dialog();
其中任何一个都会为您提供您期望的JavaScript:
$("#users-new").dialog();