Vad*_*dim 10 ruby-on-rails-5 actioncable
我已经远程搜索了网络(包括阅读许多代码示例ActionCable),这似乎是对一个非常基本的问题的答案.唉,我还没有解决我的问题.
假设,我有一个模型Search,我已导航到URL /searches/1.
我也有下面的search.coffee文件javascripts/channels/:
App.instance = App.cable.subscriptions.create 'SearchChannel'
Run Code Online (Sandbox Code Playgroud)
和一个SearchChannel看起来像这样的类:
class SearchChannel < ApplicationCable::Channel
def subscribed
search = Search.find(params[:id])
stream_for search
end
def unsubscribed
end
end
Run Code Online (Sandbox Code Playgroud)
自然地,由于上面的代码产生一个错误params[id]是nil.
这是我的问题:
Search根据URL 订阅正确的实例?SearchChannel如果我在另一个不需要订阅的URL上,如何避免尝试订阅,例如/searches/1/results?谢谢你的帮助!
如果您查看 的实现ActionCable.Subscriptions#create,您可以通过两种方式调用它。
选项 1(带有通道名称):
App.cable.subscriptions.create 'SearchChannel'
Run Code Online (Sandbox Code Playgroud)
选项 2(使用通道对象):
App.cable.subscriptions.create channel: 'SearchChannel', id: 'Best Room'
Run Code Online (Sandbox Code Playgroud)
如果您选择选项 1,它会在内部转换为通道对象。
因此,如果您想id在服务器端捕获,则需要使用第二个选项并传递 的id,search那么您应该能够按照您的描述在服务器端捕获它:
class SearchChannel < ApplicationCable::Channel
def subscribed
search = Search.find(params[:id])
stream_for search
end
def unsubscribed
end
end
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅客户端-服务器交互和订阅。
| 归档时间: |
|
| 查看次数: |
1628 次 |
| 最近记录: |