簡體   English   中英

RoR3.1:如何從控制器執行AJAX /更新

[英]RoR3.1: how to do the AJAX/Update from the controller

目前,我通過對/ moves進行GET來“輪詢” /每1000毫秒檢查一次:

jQuery(document).ready(function() {
setInterval(function() {    
$.get("/moves", function(result){
$('#board').clearBoard();
var myobj = {fen : ""};
myobj.fen = result;
$('#board').chess(myobj); });
}, 1000);
$.ajaxSetup({ cache: false });
})

我想在控制器中獲得POST后通過更新來替換它:

class MovesController < ApplicationController

def create
 m = Move.new
 last_game = Game.last
 if !last_game.nil? 
   m.game_id = last_game.id
 end
 m.move_data = params[:move_data]
 if m.save
   render :text => "#{m.move_data}"
   **Update JavaScript here**
 else
   render :text => "FAIL"
 end
end


def index
 last_move = Move.last
 if last_move.nil?
   render :text => "FAIL"
 else
   render :text => "#{last_move.move_data}"
 end
end

end

我不確定如何從控制器執行AJAX /更新。

謝謝!

響應來自控制器的ajax的正確方法是使用response_to塊。 例如:

class MyController < Application Controller

  def my_action
    respond_to do |format|
      format.js # For ajax, which is what you want.
      format.html # For regular html responses.
    end 
  end

end

然后,您需要一個相應的app / views / my_controller / my_action.js.erb

response_to塊將檢測用戶瀏覽器請求的是html文件還是js文件(例如通過ajax請求)。

如果您想直接從js發布到服務器,我建議$ .ajax。

'type'選項允許您指定'GET'或'POST'。 該方法記錄在這里

暫無
暫無

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

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