2013-06-14 18 views
13

Iは、以下の例に示すように設計されたAPIのバックエンドをテストする:カール経由で配列値を投稿するには?

http://localhost:3000/api/v1/shops/1.json 

JSON応答:ここ

{ 
    id: 1, 
    name: "Supermarket", 
    products: [ 
    "fruit", 
    "eggs" 
    ] 
} 

は、対応するモデルである。

# app/models/shop.rb 
class Shop < ActiveRecord::Base 
    extend Enumerize 
    attr_accessible :name, :products 

    serialize :products, Array 
    enumerize :products, in: %w{fruit meat eggs}, multiple: true 

    resourcify 

    validates :name, presence: true, length: { in: 5..50 }  
    validates :products, presence: true 
end 

curlを使用して、エントリの作成と更新をテストします。したがって、私は次のコマンドを使用します。

作成:

$ curl -X POST http://localhost:3000/api/v1/shops.json -d \ 
    "shop[name]=Supermarket&shop[products]=fruit,eggs&auth_token=a1b2c3d4" 

更新:

$ curl -X PUT http://localhost:3000/api/v1/shops/1.json -d \ 
    "shop[name]=Supermarket&&shop[products]=fruit,eggs&auth_token=a1b2c3d4" 

productsの値は配列として提出する必要があります。私は実行すると、上記の次のメッセージが返されるコマンド:

{"errors":{"products":["is invalid"]} 

どのように私はそれがカールで動作しますので、products配列の値を書き込む必要がありますか?

答えて

16
$ curl -X POST http://localhost:3000/api/v1/shops.json -d \ 
    "shop[name]=Supermarket \ 
    &shop[products][]=fruit \ 
    &shop[products][]=eggs \ 
    &auth_token=a1b2c3d4" 
+0

追加したい配列がある場合はどうなりますか?これにより製品の配列がクリアされ、これら2つの製品に置き換えられますか?あるいは、既存の製品のリストに追加しますか? (私は後者を行う方法を見つけるために) –

+0

@トムハモンド私は別の質問としてこれを投稿する必要があると思います、私は喜んで答えます! –

+0

確かなこと - ここに私の質問です:http://stackoverflow.com/questions/22327098/how-to-update-array-values-with-curl –

関連する問題