2017-01-04 2 views
0

Ich versuche, Action Cable zu implementieren. Ich habe vorher nur mit den Grundlagen gearbeitet. Ich arbeite jetzt an einem Projekt, bei dem der Admin- und der Client-Bereich zwei verschiedene Projekte sind. Die Datenbank für beide ist natürlich identisch.Verwenden Sie Aktionskabel, um Änderungen in einem Projekt widerzuspiegeln, das aufgrund eines anderen Projekts aufgetreten ist.

Was ich will, ist, dass, sobald die User (vom Client-Side Project) die Admin-Texte, es sollte (Text) an die Admin angezeigt (Im Admin side Project) in Echtzeit, das heißt, ohne die Seite zu aktualisieren.

How to use ActionCable as API gab mir Ideen, aber ich bin mir nicht sicher, wie ich damit fortfahren sollte.

Eine weitere Idee, die ich hatte, war action cable im Admin Projekt zu implementieren und in einer action eines controller nennen. Jetzt, wenn der Text im client Projekt erstellt wird, werde ich diese Aktion aufrufen (im Controller des Admin-Projekts; wie ich noch nicht herausgefunden habe und trotzdem daran arbeite). Auf diese Weise wird die Action Cable Änderungen in der Admin widerspiegeln.

Ich weiß nicht, ob dieser Ansatz richtig ist oder es einen anderen Weg gibt.

Ich werde für jede Anleitung dankbar sein. Vielen Dank.

P.S .: Lassen Sie mich wissen, wenn dies verwirrend und unordentlich. Ich werde es noch einmal versuchen.

Antwort

0

Alles, was Sie brauchen, ist, dass der Admin-Benutzer einen Kanal abonniert, der nur von Administratoren verwendet wird, und gleichzeitig die Nachrichten, die von Benutzern gesendet werden, an diesen bestimmten Kanal senden.

Etwas nach dem Vorbild dieses:

Kanäle/admin_chat_channel.rb

class AdminChatChannel < ApplicationCable::Channel 
    def subscribed 
    if current_user.is_admin? 
     stream_from "admin_chat_channel" 
    end 
    end 

    def unsubscribed 
    # Any cleanup needed when channel is unsubscribed 
    end 

    def update 
    end 
end 

ich Coffee in diesem Beispiel bin mit. Ich kann es in js konvertieren, wenn Sie bevorzugen.

Javascripts/Kanäle/admin_chat.coffee

(document).ready -> 
    App.merge_requests = App.cable.subscriptions.create { 
    channel: "AdminChatChannel" 
    }, 
    connected: -> 
    console.log 'Admin Chat Connected' 

    disconnected: -> 
    console.log 'Admin Chat Disconnected' 

    received: (message) -> 
    $('.some_chat_div').append(message) 

auf dem Controller, in dem Sie einfach die eingereichten Nachrichten empfangen werden müssen, die Nachricht übertragen:

ActionCable.server.broadcast "admin_chat_channel", message 
Verwandte Themen