2010-06-07 102 views
0

我想了解一下聰明的方式做到這一點...Rails的方法爲嵌套資源

我有當傳遞一個對象作爲參數,返回值的方法,如:

我想使用完全相同的方法爲嵌套資源通過jQuery/AJAX調用,像這樣:

.load(「/位置/ 8/average_rainfall」)

我理解如何界定路線,但我該如何告訴我的方法d'查找'/位置/ 8並使用它作爲參數而不是@location預期?

謝謝!

回答

-1

,我傳遞的網址爲JavaScript生成視圖,類似這樣的東西的時候:

var ajaxWidget = new AjaxWidget('<%= average_rainfall(@location) %>'); 

這對我的作品,因爲我並不需要通過周圍的URL堆。我只是將基礎URL傳遞給對象,然後根據需要在JavaScript中追加操作名稱以完成我的Ajax調用。這個問題是我不能讓JavaScript完全不顯眼,所以我想看到更好的答案。

0

不確定你的確切情況是什麼,但一個選擇是使用數據前綴屬性(html5)。然後你可以從javascript中獲取URL。

因此,如果在一個div:

<div data-rainfall_path="<%= average_rainfall_path(@location) -%>"></div> 

然後,只需用jQuery抓住它,讓您的Ajax請求。

這是我會做的聰明的方式。

+0

需要更聰明! – 2010-06-08 01:59:39

0

看起來好像你正在試圖使用視圖助手和控制器邏輯模型將是理想的。你應該堅持的average_rainfall方法在你的選址模型,然後使用該視圖像這樣:

<%= @location.average_rainfall %> 

然後在您的位置控制器通過從JavaScript的調用/locations/1/avg_rainfall使用它。

def avg_rainfall 
    @location = Location.find(params[:id]) 

    render :json => { :avg_rainfall => @location.average_rainfall } 
end 
+0

你只是打開了我的思緒。我現在明白如何將胖模型/瘦身控制器付諸實踐。謝謝!! – Blastula 2010-06-08 02:27:17