Rails - 我可以从ActionCable coffeescript中调用控制器方法吗?

时间:2017-10-12 08:32:51

标签: ruby-on-rails ruby coffeescript ruby-on-rails-5 actioncable

我正在建立一个测验应用程序,通过多个阶段同步引导所有参与者:

  1. 阶段0:测验尚未开始
  2. 阶段1:正在显示当前问题
  3. 阶段3:正在显示当前问题的结果(正确答案与给定答案,统计数据等)
  4. 阶段4:正在显示整个测验的结果
  5. 如果参与者失去连接并重新连接,我希望他们能够立即从中断的地方继续接听。

    我总是将当前阶段保存到db。所以我想在ActionCable频道的show_current_phase(curent_user)方法中调用方法connected。由于我觉得将此方法放在我的自定义QuizSession模型的相应控制器中是有意义的,我想知道:

    是否可以在我的coffeescript(前端)中调用控制器方法并让它返回一个对象?

    或者,如何更新仅重新连接的用户的DOM树而不向所有其他参与者广播?

1 个答案:

答案 0 :(得分:0)

您只需将A = np.random.rand(5e6, 1) indices = np.argsort(A) sortedA = A[indices] inv_indices = np.argsort(indices) for _ in range(100): fancy_A = fancy_function(sortedA) #returns an array with the same dimensions res = fancy_A[inv_indices] results.append(res) 文件转换为.coffee.haml模板即可。

使用js 的

.erb示例
.erb

将成为

# myscript.js
var myPath = '/some_path';

.haml咖啡例子

如果你使用的是 haml ,那么这个过程并没有什么不同。

# myscript.js.erb
var myPath = <%= some_controller_path %> ;

将成为

# myscript.coffee
myPath = '/some_path'

显然,您也可以创建# myscript.coffee.haml myPath = '#{ some_controller_path }' .js.haml文件。

在您的情况下,您可以在.coffee.erb

中找到类似的内容
.coffee.haml