簡體   English   中英

Rails僅對一個更新請求進行幾次更新

[英]Rails updating several times on only one update request

我有一個編輯器,用戶可以在其中編輯和粘貼文本,所做的更改通過AJAX自動保存在服務器中。

通過JS,我可以監視文本區域的狀態,如下所示:

$("#editor-area").bind "input propertychange", ->
    content = $("#editor-area").val()
    updateRequest = $.ajax(
      url: url
      data: 
        texto:
          contenido: content
      type: "PUT"
    )

我從這里摘錄的,由艾瑪·李回答。

當我寫一個字符時,控制台會在執行和處理一次調用時顯示相同的信息,但是會顯示多次。 它們是如此之多,以至於我的控制台超載了,並開始覆蓋過去的調用,做了完全一樣的事情:用新的文本更新記錄。

控制器中的更新方法如下所示

def update
  respond_to do |format|
    if @text.update(text_params)
      format.html {
        redirect_to user_text_path(current_user, @text)
      }
      format.json { render :json => @texto }
    else
      format.html { redirect_to edit_user_path(@user, @text) }
    end
  end
end

該選項還有一個before_filter

def set_text_and_user
  @text = get_stuff_from_Db
  @user = @text.user
end

我一直在嘗試調試這個東西,但是到目前為止,它已經使我失望了。 有什么想法會導致這種情況嗎?

我實際上認為,可接受的答案更好。

我從未使用過propertychange事件,而快速谷歌搜索表明-這可能不是100%正確的-實際上是特定於IE的事件。 我不確定其他瀏覽器如何(以及是否)支持它。 我確實認為您只需要偵聽textarea上的keyup事件。

無論如何,就您的問題而言。 您可以采取不同的方式。 他們都歸結為使用計時器。 您很可能不想將每一個按鍵發送到您的后端,因為多個並發用戶只會殺死它。

最常見的方法可能是節流。 簡單來說,它是一個捕獲事件的函數,用於檢查自上一個事件以來的時間差,並在經過足夠時間后才調用處理程序。 您可以在Google上搜索詳細信息,我很確定有jQuery插件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM