如何在Rails 5 Action Cable Channels中访问问题和应用程序控制器代码

时间:2017-03-20 21:52:29

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

我的问题中有一些代码,我想通过Action Cable Channel调用。

说我有通知频道,我想调用我的问题来更新一些

值,它确实调用了方法,但它没有调用另一个方法

写在应用程序控制器中。

说,

在我的频道中。我正在使用:

class NotificationsChannel < ApplicationCable::Channel
  include NotificationChannel

 def some_method
  create_notification(current_user, quiz)
 end
end

NotificationChannel关注代码:

module NotificationChannel
  extend ActiveSupport::Concern

  def create_notification(is_current_user, resource)
    teacher_user_id = resource.lesson_plan.teacher.user_id
    Notification.create(description: "A user with name #{get_user_name(is_current_user)} has liked the  #{resource.title}", user_id: teacher_user_id, url: resource_misc_path(resource, "quiz_notification_like_check"))
  end
end

现在,

第一个问题:

无法在问题和

中访问方法get_user_name(is_current_user)

它写在ApplicationController

第二个问题:

resource_misc_path(resource, "quiz_notification_like_check" is written in some helper it does not call even helper method.

P.S:我也注意到在Channel.rb中也无法访问_path_url的路由

任何合适的解决方法?

1 个答案:

答案 0 :(得分:0)

有关此主题,这里有一些非常有用的答案:How do I get current_user in ActionCable rails-5-api app?

最重要的一点是“电缆”中没有会话,因此您无法真正使用会话方法。

您必须直接使用cookie重写它们。

@Sajan在回答中说:“ websocket服务器没有会话,但可以读取与主应用程序相同的cookie。”