亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我可以使用 ActionCable 來刷新頁面嗎?

我可以使用 ActionCable 來刷新頁面嗎?

拉風的咖菲貓 2023-02-17 11:08:25
我最近一直在嘗試為壁球比賽創建一個實時計分系統。我已經設法將 ActionCable 與 Rails 5 一起使用來自動更新頁面上的分數,但我想知道是否可以告訴 Rails 在滿足特定條件時刷新頁面。例如,如果游戲已經結束,則會顯示一個不同的頁面,說明玩家在游戲之間休息。我需要頁面完全刷新才能發生這種情況。在我的數據庫中,布爾值“break”在游戲結束時被標記為 true,然后視圖使用條件 if/else 語句來決定顯示什么。我用來更新分數的代碼附在下面,我在想一些類似的東西然后if data.break == true頁面會自動刷新。// match_channel.js (app/assets/javascripts/channels/match_channel.js)$(function() {  $('[data-channel-subscribe="match"]').each(function(index, element) {    var $element = $(element),        match_id = $element.data('match-id')        messageTemplate = $('[data-role="message-template"]');    App.cable.subscriptions.create(      {        channel: "MatchChannel",        match: match_id      },      {        received: function(data) {          var content = messageTemplate.children().clone(true, true);          content.find('[data-role="player_score"]').text(data.player_score);          content.find('[data-role="opponent_score"]').text(data.opponent_score);          content.find('[data-role="server_name"]').text(data.server_name);          content.find('[data-role="side"]').text(data.side);          $element.append(content);        }      }    );  });});我不知道這種事情是否可能,而且我不太擅長與 Javascript 相關的任何事情,所以我很感激這方面的任何幫助。
查看完整描述

1 回答

?
慕工程0101907

TA貢獻1887條經驗 獲得超5個贊

重新加載當前頁面相對簡單。如果您使用的是 Turbolinks,您可以使用它Turbolinks.visit(location.toString())來觸發對當前頁面的重新訪問。如果您不使用 Turbolinks,請使用location.reload(). 因此,您的received函數可能如下所示:


received: function(data) {

  if (data.break) {

    return location.reload();

    // or...

    // return Turbolinks.visit(location.toString());

  }


  // your DOM updates

}

無論哪種方式都相當于用戶點擊重新加載按鈕,因此它會觸發另一個 GET,調用您的控制器并重新呈現視圖。


查看完整回答
反對 回復 2023-02-17
  • 1 回答
  • 0 關注
  • 98 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號