2013-02-19 77 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