在我的控制器中,我有当前代码导致JSON数组,即使只有一个结果:
def getSharedSpecial
@result = Campaign.find_by_sql("SELECT
id
,name
,image
,ad_caption
,ad_details
FROM campaigns
WHERE id = " + params[:shared_campagin_id].to_s + "
LIMIT 1;")
respond_to do |format|
format.html
format.json { render json: { special_shared: @result }}
end
end
返回:
"special_shared":[
{
"id":41,
"name":"tester the way",
"image":{
"url":"/uploads/campaign/image/41/Gilded_pic.jpg"
},
"ad_caption":"yfftitu6",
"ad_details":"jku"
}
]
}
从[]
可以看出,这是一个JSON数组。
如何只创建一个对象而不是整个数组呢?
答案 0 :(得分:1)
问题是即使您只查找单个记录,find_by_sql
也会返回一个数组。没有必要使用find_by_sql
并且您已经通过这样做打开了SQL注入攻击,所以只需用传统方式编写查找器:
@result = Campaign.select(:id, :name, :image, :ad_caption, :ad_details).find(params[:shared_campagin_id])