Rails方法作为嵌套资源

时间:2010-06-07 23:55:04

标签: jquery ruby-on-rails resources rest

我想知道这样聪明的方法......

我有一些方法在将对象作为参数传递时返回一个值,例如:

我想使用与嵌套资源完全相同的方法来通过jQuery / Ajax调用,如下所示:

.load( '/位置/ 8 / average_rainfall')

我理解如何定义路由,但是如何告诉我的方法'find'/ location / 8并将其作为参数而不是@location按预期使用?

谢谢!

3 个答案:

答案 0 :(得分:0)

不确定您的确切情况,但一种选择是使用数据前缀属性(html5)。然后,您可以使用javascript从中获取URL。

所以如果在div上:

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

然后用jQuery抓住它来发出你的ajax请求。

这是我做的聪明方式。

答案 1 :(得分:0)

您似乎正在尝试使用视图助手和控制器逻辑,其中模型是理想的。您应该将average_rainfall方法粘贴在Location模型中,然后在视图中使用它,如下所示:

<%= @location.average_rainfall %>

然后在您的位置控制器中,通过从javascript调用/locations/1/avg_rainfall来使用它。

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

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

答案 2 :(得分:-1)

我只是在生成视图时将URL传递给JavaScript,如下所示:

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

这对我有用,因为我不需要传递大量的URL。我只是将基本URL传递给对象,然后根据需要在JavaScript中添加动作名称以进行Ajax调用。这个问题是我无法保持JavaScript完全不引人注目,所以我希望看到更好的答案。