[英]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.