0

このオブジェクトを提供する前に、名前付きのルートを指定する必要があります。これを行うよりクリーンな方法はありますか?

get '/api/ducks/:id' do |id|
    content_type :json
    duck = {
        duck: Duck.find(id)
    }
    JSONP duck
end
4

2 に答える 2

3

何のオームを使っているかわかりません

アクティブレコードを使用していると仮定します

グローバルに適用される構成の場所を設定できます

ActiveRecord::Base.include_root_in_json = true

また

Duck.find(id).as_json(:root=>true)

http://api.rubyonrails.org/classes/ActiveModel/Serializers/JSON.html

このSOの回答も確認してください https://stackoverflow.com/a/6515973/518832

MongoMapper の場合

class Something
  include MongoMapper::Document
  self.include_root_in_json = true
end

その後

JSONP Duck.where(:id=>id).to_json

この github コメントに従って動作するはずです https://github.com/jnunemaker/mongomapper/issues/392

また、知識のためだけにソースがどのように機能するかを確認したい

https://github.com/jnunemaker/mongomapper/blob/master/lib/mongo_mapper/plugins/serialization.rb

于 2013-04-23T07:23:22.217 に答える
2

唯一のクリーンな方法は、不要な変数を削除することです。

get '/api/ducks/:id' do |id|
    content_type :json
    JSONP { duck: Duck.find(id) }
end
于 2013-04-23T07:20:13.573 に答える