Rails + Backbone+Fayeを使用してサンプルチャットアプリケーションを作成しています。
現在、Fayeのメッセージング機能を使用して、createイベントでDOMに書き込むことができますが、実際にはバックボーンモデルをインスタンス化していません。AlaRyanBatesのチュートリアル私はただ内部で呼んでいます
create.js.erb
<% broadcast "/messages/new" do %>
$("#chats-table").append("<%= escape_javascript render :partial => "chat", :locals => { :chat => @chat } %>");
<% end %>
そしてそれを別のJavaScriptで公開します:
faye.subscribe("/messages/new", function(data) {
eval(data);
});
これを少しリファクタリングして、バックボーンのモデルを活用したいと思います。良いユースケースはdeleteメソッドです。
私のチャットモデルはクリックイベントにバインドされています。どの呼び出しを削除しますか。
model.destroy();
this.remove();
バックボーンはdeleteメソッドを呼び出し、削除リクエストを/ entity/idに送信します
また、rails'/views/delete.js.erb'をディスパッチします。そこで、Rubyコードでメッセージを公開するヘルパーメソッドを呼び出します。
<% broadcast "/messages/delete" do %>
<%= @chat.to_json.html_safe; %>
<% end %>
リスナー
var faye = new Faye.Client('http://0.0.0.0:9292/faye');
faye.subscribe("/messages/delete", function(data) {
});
ここで、削除されたバックボーンモデルを何らかの方法でインスタンス化して、そのイベントをすべてのユーザーの画面にプッシュし、DOMから削除できるかどうか疑問に思いました。基本的に、this.remove();を呼び出したいと思います。チャットモデルではなく、フェイクライアントの内部。これも可能ですか?