Rails项目中的Web工作者

zob*_*bel 5 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"); 
Run Code Online (Sandbox Code Playgroud)

my_task.js与保存上述代码的文件相同.这就是my_task.js的样子:

self.addEventListener('message', function(e) {
  self.postMessage(e.data);
}, false);
Run Code Online (Sandbox Code Playgroud)

但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)
Run Code Online (Sandbox Code Playgroud)

正如您所见,Rails尝试在脚本启动时发送http get请求.
我怎么解决这个问题?有没有更好的方法在Rails项目中使用Web worker?

谢谢

evd*_*vdc 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


hug*_*ugh 0

将 my_task.js 放入 public 文件夹中。