【发布时间】:2013-05-07 13:14:04
【问题描述】:
在 Rails 控制器中,我使用对外部数据库的 JSON 请求来返回用于对记录集合进行排序的整数:
Model.order(JSON.parse(open("http://myapp.com/models/#{:id}")).read)['attribute'])
我想让这个动态来帮助在环境之间切换。比如:
Model.order(JSON.parse(open(model_url(model))).read)['attribute'])
这是不正确的,model_url(model) 正在返回错误:
undefined local variable or method 'model'
如何在查询中引用 self?
一定有比
更优雅的解决方案...JSON.parse(open("#{root_url}/models/{:id}"))....
编辑:
Lightswitch05 在下面的回答确实回答了我提出的问题。查询应该引用params[:id]来获取当前记录的url。
事实上,我已经决定将这个 JSON 调用移动到模型上的虚拟属性中。这意味着我可以简单地拨打Model.order(:my_virtual_attribute)。虽然这个解决方案带来了自己的问题——我需要让 url_helpers 对模型可用——但从长远来看,我认为这将是一个更简洁的解决方案。
【问题讨论】:
-
你到底想完成什么?
-
您能否提供一个“视图”代码的 sn-p,将您想要的内容发送回控制器?
-
嗨@thisfeller,查看代码没有任何用处。它只是一个索引视图。但我需要从外部 JSON 请求中获取记录顺序
-
那么,您试图从外部 API 请求中获取的只是模型的 ID?您是否还没有开始发出外部请求的模型 ID?
-
@giorgan,我正在尝试在查询中引用当前记录。基本上我想知道如何实现
Model.order(model_url(model))。而且我知道这本身没有任何意义,但其他一切只会减损真正的问题。
标签: ruby-on-rails