1

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}*

何が表示されないのですか? ありがとう、サム

4

1 に答える 1