0

私は Rails と JavaScript が初めてで、jQuery 関数をイベントに登録するのに苦労しています。私は別のプロジェクトでそれを行いましたが、これを1行ずつコピーするところですが、まだ機能していません。これが私のコードです

まず、プッシャージェムを gemfile に追加しました

gem 'pusher'

次に、bundle install を実行しました

次に、これらの行を environment.rb に追加しました

require 'pusher'

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

次に、プッシャー スクリプトを application.html の先頭に追加しました。

application.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>

次に、application.js に pusher.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 とプッシャーは完全に機能しているように見えますがaddJob、イベントをアクティブにすると実行されません。

4

2 に答える 2

0

pusherオブジェクトではなく、ジョブをオブジェクトにバインドする必要がありmyChannelます。また、document.readyセクション内でこれらのオブジェクトを定義していますが、それが問題になるとは思えません。

于 2013-05-17T22:44:00.230 に答える
0

この問題を解決するために、プッシャーで新しいアプリを開始し、[暗号化を有効にする] と [クライアント イベントを有効にする] を選択しました。新しいアプリを開始する必要があります。Pusher アプリの設定でこれらの設定に更新することはできません。これはプッシャーが修正すべきバグです!

于 2013-05-20T22:03:56.687 に答える