6

我尝试使用网络工作者来同时运行多个 javascript 代码。要启动工作人员,我将以下内容放入我的 javascript 代码部分:

var worker = new Worker("my_task.js");
worker.onmessage = function(e) {
    console.log('Worker said: ', e.data);
};
worker.postMessage("test"); 

my_task.js是与包含上述代码的文件相同的文件夹。这就是my_task.js 的样子:

self.addEventListener('message', function(e) {
  self.postMessage(e.data);
}, false);

但是Ruby on Rails(3.2.1版)似乎有问题:

Started GET "/users/my_task.js" for 127.0.0.1 at ...
...
...
ActiveRecord::RecordNotFound (Couldn't find User with id=my_task)

如您所见,Rails 会在脚本启动时尝试发送 http get 请求。
我怎么解决这个问题?有没有更好的方法在 Rails 项目中使用网络工作者?

谢谢

4

3 回答 3

5
  • 将 my_task.js 放入/public/javascripts
  • 在创建 worker 的 javascript 代码中,使用以下 ERB:var worker = new Worker("<%= javascript_path "my_task.js" %>");
  • 添加.erb到上面的 javascript 代码所在的任何文件的扩展名。所以如果它是mypage.js,它变成mypage.js.erb.

以上适用于我在 Rails 4.2.0, ruby​​ 2.0.0p598

于 2015-02-26T07:05:58.897 回答
0

将 my_task.js 放在公用文件夹中。

于 2013-04-08T16:51:37.933 回答
0

以上<% javascript_path %>

lib/assets/javascripts使用 Rail5 为我工作

于 2020-01-15T19:27:23.530 回答