Dav*_*vid 22 ruby json ruby-on-rails
说我有这个简短的代码:
item = Item.find(params[:id])
render :json => item.to_json
Run Code Online (Sandbox Code Playgroud)
但我需要插入/推送额外的信息到返回的json对象,我该怎么做?
让我们说我需要插入这个额外的信息:
message : "it works"
Run Code Online (Sandbox Code Playgroud)
谢谢.
Dog*_*ert 27
item = Item.find(params[:id])
item["message"] = "it works"
render :json => item.to_json
Run Code Online (Sandbox Code Playgroud)
NM.*_*NM. 13
该to_json方法将选项对象作为参数.所以你可以做的是在你的item类中创建一个名为message的方法,让它返回你想要的文本作为它的值.
class Item < ActiveRecord::Base
def message
"it works"
end
end
render :json => item.to_json(:methods => :message)
Run Code Online (Sandbox Code Playgroud)
我发现接受的答案现在抛出了Rails 3.2.13中的弃用警告.
弃用警告:您正在尝试创建属性
message'. Writing arbitrary attributes on a model is deprecated. Please just useattr_writer`等.
假设您不想将建议的attr_writer放在模型中,可以使用该as_json方法(返回Hash)来调整JSON响应对象.
item = Item.find(params[:id])
render :json => item.as_json.merge(:message => 'it works')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30292 次 |
| 最近记录: |