Rails项目中的Web工作者

时间:2013-02-19 11:08:46

标签: ruby-on-rails web-worker

我尝试使用网络工作者能够同时运行多个JavaScript代码。为了启动worker,我将以下内容放入我的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项目中使用Web worker?

由于

4 个答案:

答案 0 :(得分:5)

  • 将my_task.js放入/public/javascripts
  • 在创建工作人员的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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

使用上述&lt;%javascript_path%&gt;

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

答案 3 :(得分:0)

以上<% javascript_path %>

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