2014-02-05 34 views
0

控制器具有下列路線:(爲了說明簡單的例子)如何在jQuery .ajax調用之後從Ruby(Padrino)服務器端呈現全視圖?

get :index do 
    render "person/index" #this view has the .ajax action in it 
end 

put :update, :with => :id do 
    @person = Person.find(params[:id]) 
    render "person/details" 
end 

從index.slim文件的阿賈克斯電話:

onTestButtonClicked: function() { 
    return $.ajax({ 
    type: "PUT", 
    url: "/update/" + contact_id, 
    data: { 
     key: value 
    }, 
    success: function(data) { 
     return console.log("success"); 
    } 
    }); 
} 

到底是什麼,我要完成的是隻需讓呈現來自更新路由的「person/details」行,就可以替換整個視圖,就像它是GET或提交的表單一樣。實際上成功傳遞的數據是用於驗證某些信息的JSON對象,但只是在成功時重定向窗口實際上不會實現我不需要的任何操作,它們會將成功的部分結果數據替換爲部分DOM回電話。

我在這裏錯過了一些簡單的工作嗎?

+0

如果要替換整個頁面爲什麼要使用ajax? –

+0

這是一個很好的問題,我想到今天早上與這個問題作鬥爭之後,直到很晚。原因是我需要實際發送帶有PUT的JSON對象到服務器。不幸的是,在這種情況下,這是不可選的。我想也許我正在尋找一種方法來從JS不是ajax做PUT或POST。 – Pelted

+1

無論如何,我認爲你可以在你的ajax調用的** success **中訪問**渲染「person/details」**。 類似於:** $('body')。html(data); **也許有用。 –

回答

0

若要擴大JoséBarbosa的評論:data在您的成功回調可能包含整個頁面的HTML。但是,您可能想要禁用佈局:

render("person/details", layout: !request.xhr?) 
相關問題