Ruby 1.9.3 の Rails 3.2.11 アプリに、json 経由で期待する値が以下の cURL 呼び出しで渡されない理由がわかりません。私は価格の accept_nested_attributes を持つ商品モデルを持っていますが、SO で見つけたいくつかの cURL 呼び出しを使用すると、各属性は手がかりとなるcommodity_id を除いて NULL になります。しかし、それは私には明らかではありません。もちろん、価格モデルにはcommodity_idのフィールドがあり、発行者は価格がcommodity_id = 1であることを知っている必要があることが私の呼び出しでわかります.以下の両方の呼び出しは、表示されているのと同じ結果をもたらします. おそらくコンマの位置が間違っているか何かですが、見たことはありません。
コモディティ.rb
class Commodity < ActiveRecord::Base
attr_accessible :description, :name
has_many :prices
accepts_nested_attributes_for :prices
end
価格.rb
class Price < ActiveRecord::Base
attr_accessible :buyer, :date, :price, :quality, :commodity_id
belongs_to :commodity
end
api/prices_controller.rb
module Api
class PricesController < ApplicationController
respond_to :json
def create
commodity = Commodity.find(params[:commodity_id])
respond_with :api, :commodity, commodity.prices.build(params[:price])
end
end
ルート.rb
namespace :api, defaults: {format: 'json'} do
resources :commodities, only: [:show, :new, :create] do
resources :prices
end
end
2 つの cURL 呼び出しを次に示します。
curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POST http://localhost:3004/api/commodities/1/prices -d "{\"commodity\":{\"prices_attributes\":[{\"price\":\'8\',\"buyer\":\"Sam\",\"quality\":\"Bad\",\"commodity_id\":1}]}}"\",\"commodity_id\":1}]}}"
SO で NULL 応答を検索することに基づく 2 つ目:
curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POST http://localhost:3004/api/commodities/1/prices -d "price[price]=6" -d "price[buyer]=Sam" -d "price[quality]=good" -d "price[commodity_id]=1"
どちらも次のようになります。
{"buyer":null,"commodity_id":1,"created_at":null,"date":null,"id":null,"price":null,"quality":null,"updated_at":null}*
何が表示されないのですか? ありがとう、サム