1

我当前的 json 输出是“id”:3,“name”:“test”,我需要 3 为“3”。

我将如何在 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
4

3 回答 3

2

Sergio 的解决方案会奏效。但是,如果您在多个地方这样做,我建议您覆盖 Rails 的内置函数as_json

在您的Tag模型中:

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

您的控制器方法将保持不变。这是未经测试的,但应该可以工作。

于 2012-06-25T17:12:35.653 回答
1

像这样的东西:

format.json do
  tags = @tags.to_json(:only => [:id, :name])
  render :json => tags.map{|t| t['id'] = t['id'].to_s; t}
end
于 2012-06-25T17:05:27.673 回答
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
于 2012-06-25T19:58:38.040 回答