【问题标题】:Rails 3 and unobtrusive javascriptRails 3 和不显眼的 javascript
【发布时间】:2011-03-31 23:01:31
【问题描述】:

我在将不显眼的 js 文件与视图链接时遇到问题。

我有一个名为 index.html.erb 的视图

...
<div id="fooBar">say bye!</div>
...

我还有 js 文件 index.js.erb

$("#fooBar").html("say hello!")

目前我收到say bye 消息,因为 javascript 文件未执行。

我做错了什么?

在我看来,js.erb 并没有用于此目的。我只需要在普通的 .js 文件中添加脚本引用,在该文件中查看特定的客户端逻辑

谢谢, 阿列克谢

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 unobtrusive-javascript


    【解决方案1】:

    你是在元素或文档加载后做的吗?

    试试

    $(function() {
        $("#fooBar").html("say hello!")
    });
    

    假设您使用的是 jQuery,看起来就是这样。

    【讨论】:

    • 我假设 Rails 会自动将 index.js.erb 文件链接到 index.html.erb 视图。但它不这样做。或者我应该手动将脚本引用添加到我的视图中。根据我看到的示例,不需要手动在视图中添加javascript引用。
    【解决方案2】:

    你有

    <%= javascript_include_tag :defaults %>
    <%= csrf_meta_tag %>
    

    在您的视图/布局/application.html 中?我遇到了 JS 问题,因为我忘记了后一个问题(仅限 Rails 3)。

    【讨论】:

      【解决方案3】:

      您是否在控制器中指定了 render_with :js?

      不幸的是,您在那里编写脚本的方式不会真正起作用。您只能渲染一件事 html 或 js。使用 Rails UJS,当您单击显示(例如)时,它会根据您是否让 JS 动态呈现或使用 HTML 呈现来决定。你不能同时渲染两个东西。

      试试这个: http://www.simonecarletti.com/blog/2010/06/unobtrusive-javascript-in-rails-3/

      【讨论】:

      • 还可以看看 rails.js 的内部。它并没有那么大,它会让你很好地了解真正发生的事情。
      猜你喜欢
      • 2011-06-12
      • 1970-01-01
      • 1970-01-01
      • 2011-06-05
      • 2011-11-09
      • 2011-09-30
      • 2011-07-09
      • 1970-01-01
      • 2011-05-15
      相关资源
      最近更新 更多