我不确定为什么下面的 cURL 调用似乎没有通过 json 将我期望的值传递给我在 Ruby 1.9.3 中的 Rails 3.2.11 应用程序。我有一个带有价格接受_nested_attributes 的商品模型,但是使用我在 SO 上找到的几个 cURL 调用,除了应该作为线索的商品 ID 之外,每个属性都带有 NULL。但这对我来说并不明显。当然,价格模型有一个商品 ID 字段,您可以通过我的调用看到发行人必须知道商品 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
这是两个 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 响应:
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}*
我没看到什么?谢谢,山姆