代码之家  ›  专栏  ›  技术社区  ›  Tolga

Rails Action Cable:如何访问ApplicationCable::Channel类中的实例变量?

  •  0
  • Tolga  · 技术社区  · 6 年前

    为此目的;我计划在定义订阅时使用@productinstance varialbe,不管它看起来如何;在Action Cable中无法访问实例变量

    “app/channels/product\u channel.rb”

    class ProductChannel < ApplicationCable::Channel
      def subscribed
        stream_from "room_channel_product_#{@product.id}"
      end
    
      def unsubscribed
      end
    end
    

    1 回复  |  直到 6 年前
        1
  •  1
  •   DmitryBash    6 年前

    我认为在定义订阅时不能访问实例变量。但是您可以将product\u id作为参数传递,然后订阅ProductChannel。 https://guides.rubyonrails.org/action_cable_overview.html#subscriber

    App.cable.subscriptions.create { channel: "ProductChannel", product_id: your_product_id }
    

    def subscribed
      stream_from "product_channel_#{params[:product_id]}"
    end
    
        2
  •  2
  •   theterminalguy    4 年前

    在您的 subscribed 已订阅

    一个例子 exists within the ActionCable codebase

    class ProductChannel < ApplicationCable::Channel
      def subscribed
        @product = Product.find(params[:product_id])
        stream_from "room_channel_product_#{@product.id}"
      end
    
      def unsubscribed
      end
    
      def foo
        @product.do_stuff
      end
    end