如何设置动作电缆以在同一页面上广播到单独的频道

时间:2019-07-14 13:32:47

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

我正在建立地点位置的索引页。每个地点的位置都有一个分数。每次用户对某个地点进行投票时,都会计算数据库中的投票 并退回score/percentage

在地点index页面上,我希望将score/percentage与每个地点相关联,以在用户将yesno单击为“你会推荐按钮吗?”实时。现在,单击该按钮时,所有项目都显示相同的值。

enter image description here

places_controller.rb

def tally
    @place = Place.find(params[:place_id].to_i)
    if params[:user_response] == 'yes'
      @place.tally_up
    elsif params[:user_response] == 'no'
      @place.tally_down
    end

    ActionCable.server.broadcast "tally_channel",
                                 content: @place.tally.percent,
                                 place_id: @place.id
  end

tally_channel.rb

class TallyChannel < ApplicationCable::Channel
  def subscribed
    stream_from "tally_channel"
  end

  def unsubscribed
    # Any cleanup needed when channel is unsubscribed
  end
end

tally.js

App.tally = App.cable.subscriptions.create('TallyChannel', {
  connected() {},


  disconnected() {},


  received(data) {
    if (data) {
      let placeID = data.places
      console.log(data)
      $('.score-value').replaceWith("<span class='score-value'>" + data.content + "</span>")
    }
  }
});

我尝试使用Rails guide for ActionCable,但实际上并没有提供太多有用的信息。

请,我们将不胜感激。

0 个答案:

没有答案