2013-02-19 82 views
4

我尝试使用web工作人员以便能够同时运行多个javascript代码。启动工作我把下列我的javascript代码段:Rails项目中的网络工作人员

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 "https://stackoverflow.com/users/my_task.js" for 127.0.0.1 at ... 
... 
... 
ActiveRecord::RecordNotFound (Couldn't find User with id=my_task) 

正如你所看到的Rails试图在脚本启动时发送http获取请求。
我该如何解决这个问题?有没有更好的方式在Rails项目中使用Web工作人员?

谢谢

+0

在rails上ruby似乎没有问题,因为你提供'my_task'作为id而不是实际的ID,所以你的代码似乎有问题。你能发布你的工人代码吗? – pduersteler 2013-02-19 11:19:34

+0

你在哪里存储my_task.js? – basgys 2013-02-19 11:45:05

+0

与包含'worker.postMessage'代码的文件位于同一文件夹中 – zobel 2013-02-19 12:01:58

回答

0

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

  • 4
    • 认沽my_task.js在JavaScript代码在其中创建工人,使用下面的ERB:var worker = new Worker("<%= javascript_path "my_task.js" %>");
    • 添加.erb到任何文件中的JavaScript代码在上面发现的扩展。所以如果它是mypage.js,它变成mypage.js.erb

    对我来说,上述工程on Rails的4.2.0,红宝石2.0.0p598

    +0

    谢谢!我个人将我的工作文件放在'lib/assets/javascripts'中。 – 2015-03-25 09:58:52

    0

    使用上述<%javascript_path%>

    和lib /资产/ JavaScript的工作对我来说使用Rail5