2015-02-06 70 views
0

以我控制器I具有本代码,结果在一个JSON阵列,即使只有一个结果:滑轨渲染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数组。 如何创建一个对象而不是整个数组?

+1

能'@ result'以往任何时候都包含多个结果?如果是这样,你应该保持原样。如果不是,那么向我们展示创建'@ results'的代码,因为它是应该修复的。 – infused 2015-02-06 00:54:06

+0

好的,代码是SQL,添加 – Sauron 2015-02-06 01:05:41

回答

1

问题是find_by_sql总是返回一个数组,即使您只查找一条​​记录。有没有必要使用find_by_sql和你这样做你自己打开SQL注入攻击,所以只写了取景器的传统方式:

@result = Campaign.select(:id, :name, :image, :ad_caption, :ad_details).find(params[:shared_campagin_id])