2015-02-06 110 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])