2010-06-07 113 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