【问题标题】:template ruby string-eval bug?模板红宝石字符串评估错误?
【发布时间】:2012-02-19 05:29:16
【问题描述】:

下面的 A 和 B 应该是等效的,但只有版本 A 有效。 rails 字符串评估似乎已损坏或发生得太早/太晚或其他什么。有什么想法吗?

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

【问题讨论】:

  • 真正奇怪的是,以下工作,虽然它不应该: $().dialog();
  • 或者说它间歇性地工作——真的很奇怪

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


【解决方案1】:

Rails3+ HTML 默认编码&lt;%= ... %&gt; 中的内容。这意味着你的 B 是这样的:

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

这在 JavaScript 中毫无意义。您想要其中之一:

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

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

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

【讨论】:

  • ...第二个版本也没有
  • @Mark:“不起作用”是什么意思?你看过网页的来源吗?
  • 好的,现在两个版本都在工作,但这并不意味着什么,因为一秒钟前也没有,正如我上面提到的,$() .dialog() 曾经也可以正常工作,尽管它不应该,然后停止工作。
  • @Mark:你在某处遇到了缓存问题。使用浏览器的查看源代码查看不工作时生成的页面。
  • 好的,他们现在都在一致地工作。不知道为什么它最初没有工作 - 也许在某个地方(使用测试服务器)的轨道中有一些延迟传播。如果我没有更多问题,我会回来并将其标记为已回答。非常感谢。
猜你喜欢
  • 2010-11-29
  • 1970-01-01
  • 2010-11-20
  • 2014-02-11
  • 2011-01-21
  • 2011-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多