带附件的ActionCable

时间:2017-01-23 09:01:39

标签: ruby-on-rails-5 actioncable

我想在聊天应用程序中附加图像。我已完成文本聊天,但我无法发送带有actioncable的附件。

App.global_chat = App.cable.subscriptions.create {
      channel: "ChatRoomsChannel"
      chat_room_id: messages.data('chat-room-id')
      },
      connected: ->
        # Called when the subscription is ready for use on the server

      disconnected: ->
        # Called when the subscription has been terminated by the server

      received: (data) ->
        messages.append data['message']
        messages.append data['attachment']
        messages_to_bottom()

      send_message: (message, chat_room_id, attachment) ->
        @perform 'send_message', message: message, chat_room_id: chat_room_id, attachment: attachment

    $('#new_message').submit (e) ->
      $this = $(this)
      textarea = $this.find('#message_body')
      attachment = $this.find('#message_attachment')
      if $.trim(textarea.val()).length > 1
        App.global_chat.send_message textarea.val(), messages.data('chat-room-id'), attachment[0].files[0]
        textarea.val('')
        attachment.val('')
      e.preventDefault()
      return false

1 个答案:

答案 0 :(得分:0)

我无法评论,但我可以给你一些提示来完成它。

如你所知,rails form_for不支持ajax上传,并且在ajax上传的轨道上我很难深入挖掘。

首先安装此宝石

gem 'remotipart', '~> 1.2'

添加gem后,您可以创建一个包含文件输入的表单。最好的事情是在添加gem之后文件自动上传。 在创建表单时,务必在remote: true添加form_for

我尝试过使用paperclip gem,它工作得非常好。如果你有问题,那么ping我们