0

我是 Rails 和 javascript 的新手,我很难将 jQuery 函数注册到事件中。我已经在另一个项目中完成了它,我几乎正在逐行复制它,但它仍然无法正常工作。这是我的代码

首先,我将 pusher gem 添加到我的 gemfile

gem 'pusher'

然后我跑了捆绑安装

然后我将这些行添加到 environment.rb

require 'pusher'

Pusher.app_id = **
Pusher.key = **
Pusher.secret = **

然后我将推送脚本添加到我的 application.html 的头部

应用程序.html.erb

  <head>
    <meta charset="utf-8" />

    <!-- Uncomment to make IE8 render like IE7 -->
    <!-- <meta http-equiv="X-UA-Compatible" content="IE=7" /> -->

    <!-- Set the viewport width to device width for mobile -->
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />

    <title><%= content_for?(:title) ? yield(:title) : "Untitled" %></title>

    <%= stylesheet_link_tag    "application" %>
    <%= javascript_include_tag "vendor/custom.modernizr" %>
    <%= javascript_include_tag "http://js.pusher.com/2.0/pusher.min.js" %>
    <%= javascript_include_tag "application" %>
    <%= csrf_meta_tags %>
  </head>

接下来,我将 pusher.js 文件包含在 application.js 中

//= require pusher

最后,这是我的 pusher.js 文件

var pusher = new Pusher('MY KEY');

var myChannel = pusher.subscribe('job-channel');
$(document).ready(function() {

    myChannel.bind('job-added', function(data) {
        addJob(data)
    });

    function addJob(data) {
        var new_job = "<h1> TEST </h1>";
        $('.job_list').append(new_job)
    }

});

我像这样在控制器中激活事件

Pusher['job-channel'].trigger('job-added', @job.to_json)

这不起作用,但即使我使用 Pushers 事件创建器,它也不起作用。

我尝试通过调试器运行 jQuery,$(document).ready 和 pusher 的东西似乎工作得很好,但是addJob当我激活事件时它只是不执行。

4

2 回答 2

0

您需要将作业绑定到pusher对象,而不是myChannel对象。另外,我在我的document.ready部分中定义了这些对象,但我怀疑这很重要。

于 2013-05-17T22:44:00.230 回答
0

为了解决这个问题,我在 pusher 中启动了一个新应用,并选择了 Enable Encryption 和 Enable Client Events。您必须启动一个新应用程序,您不能只在 Pusher 应用程序设置中更新这些设置。这是错误推送者应该修复的!

于 2013-05-20T22:03:56.687 回答