ActionCable if语句的问题

时间:2016-11-15 21:16:19

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

我通过ActionCable传输消息,我在messages-partial中得到了这个:

- if current_user.admin?
  = link_to "[x]", msg_path(msg), method: :delete, data: { confirm: "sure?"}

如果普通用户发送消息,这可以正常工作,但是当管理员发送消息时,其他普通用户会显示链接,但是当我刷新页面时,它会消失。

如何预防这个?

1 个答案:

答案 0 :(得分:0)

您最有可能向所有人广播此消息。你需要在你的消息控制器中实现这样的东西,这样只有那个频道的订阅者才能收到它(messages_controller.rb):

def delete
  if message.destroy
    ActionCable.server.broadcast "messages_#{message.chatroom_id}_channel",
      message_id: message.id
    head :ok
  end
end

同样,您需要订阅正确的频道(messages_channel.rb):

def subscribed
  stream_from "messages_#{params['chatroom_id']}_channel"
end