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

セルジオのソリューションは機能します。ただし、これを複数の場所で行っている場合は、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

This was the only solution that worked for me:

  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 に答える