我正在开发一个在某个部分使用jQuery UI Autocomplete的Padrino / Sinatra应用程序。
要填充自动填充,我已定义以下内容:
get '/autocompletedata' do
content_type :json
Foo.all.to_json(:only => :name)
end
这将从一个漂亮的JSON数组中的模型name
返回属性Foo
,因为:
[{"name":"First"},{"name":"Second"},{"name":"Third"},{"name":"Fourth"}]
但是,jQuery的自动完成要求返回的JSON数据包中的属性名称标记为label
,因为:
[{"label":"First"},{"label":"Second"},{"label":"Third"},{"label":"Fourth"}]
在转换过程中,是否有快速且以编程方式将属性名称从name
更改为label
?
如果不这样,我们可以在DataMapper中定义别名属性吗?我似乎无法找到办法做到这一点?!?
答案 0 :(得分:0)
好的,我找到了解决方法。
在我的模型Foo
中,我添加了以下方法:
def label
name
end
然后我更改了to_json
选项:
Foo.all.to_json(:methods => :label)
得到了我想要的结果。实际上,为了使事情更顺利,我最终缩小了DataMapper查询的范围:
Foo.all(:fields => [:name]).to_json(:methods => :label, :only => :label)