1

次のような JSON を出力する Ruby コードがあります。

def nearby
  #@bathrooms = Bathroom.geo_scope(:origin =>[params[:lat],[params[:lon]]], :within => 5)
  lat = params[:lat]
  lon = params[:lon]
  #@bathrooms = Bathroom.geo_scope(:within => 5, :origin => [45.580639,-122.677682], :order=>'distance')
  @bathrooms = Bathroom.geo_scope(:within => 3, :origin => [lat,lon], :order=>'distance')
  respond_to do |format|
    format.json  { render :json => @bathrooms }
    format.js   { render :nothing => true } 
  end   
end

結果は次のようになります。

 [{"ID":129,"access":"1","avail":"0","bathroomtype":"0","city":"PORTLAND","comment":"","country":"US","created":"0000-00-00 00:00:00","directions":"The two bathrooms are in the long hallway at the back of the restaurant, past the bar.","distance":"2.94986114636676","lat":"45.539217","lon":"-122.661795","modifed":"0000-00-00","name":"Echo","postal":"97212-3727","slug":"echo-portland170","source":"","state":"OR","street":"2225 NE Martin Luther King Jr. Blvd"},

セットに名前を付ける方法がわかりませんか?たとえば、最初の括弧の後に、セットにバスルームという名前を付けたいと思います。どうすればRailsでこれを行うことができますか?

4

2 に答える 2

1

試す:

render json: { bathrooms: @bathrooms }
于 2012-11-05T21:20:44.633 に答える
0

@bathrooms はリストのように見えるため、リスト内の要素にキーを割り当てることはできません。最初にマップを作成する必要があります。たとえば、最初の要素のみが必要な場合:

format.json { render :json => {:bathrooms => @bathrooms[0]} }

すべてのリスト要素を設定するには:

format.json { render :json => {:bathrooms => @bathrooms} }
于 2012-11-05T21:24:10.830 に答える