2012-06-25 48 views
1

我當前的json輸出爲「id」:3,「name」:「test」,我需要3爲「3」。將引號添加到帶有導軌的json中的ID

我該如何去做這個在rails?

def search 
    @tags = Tag.where("name like ?", "%#{params[:q]}%") 
    respond_to do |format| 
     format.json { render :json => @tags.to_json(:only => [:id, :name]) } 
    end 
    end 
+0

爲什麼你需要的'3'是' 「3」'? –

+0

另一個插件因爲它而破壞 – Tallboy

+0

還有什麼其他插件?你有沒有考慮修復其他插件? –

回答

0

這只是爲我工作的解決方案:

def search 
    @tags = Tag.where("name like ?", "%#{params[:q]}%") 
    respond_to do |format| 
     format.json { render :json => @tags.map {|t| {:id => t.id.to_s, :name => t.name }} } 
    end 
    end 
1

事情是這樣的:

format.json do 
    tags = @tags.to_json(:only => [:id, :name]) 
    render :json => tags.map{|t| t['id'] = t['id'].to_s; t} 
end 
+0

太少的參數 – Tallboy

+0

@Tallboy,你是什麼意思? –

+0

當我加載它,我得到的錯誤「太少的參數」:應用程序/控制器/ tags_controller.rb:9:在'格式' 應用程序/控制器/ tags_controller.rb:9:在'搜索' – Tallboy

2

Sergio的解決方案會奏效。但是,如果您在多個位置執行此操作,我會建議覆蓋Rails的內置函數as_json

在你Tag型號:

def as_json(options={}) 
    options[:id] = @id.to_s 
    super(options) 
end 

你的控制器的方法將保持不變。這是未經測試的,但應該工作。

相關問題