API с рельсами 3.2 и рабл - PullRequest
       19

API с рельсами 3.2 и рабл

1 голос
/ 07 марта 2012

Я разрабатываю API с рельсами 3.2 и рабл.

В основном у меня есть модель "Актив" и очень простой связанный контроллер:

class AssetsController < ApplicationController
  respond_to :json

  # GET /assets.json
  def index
    @assets = Asset.all
  end

  # GET /assets/1.json
  def show
    @asset = Asset.find(params[:id])
  end

  # GET /assets/1/edit
  def edit
    @asset = Asset.find(params[:id])
  end

  # POST /assets.json
  def create
    @asset = Asset.new(params[:asset])
    @asset.save
  end
end

Для каждого действия у меня есть связанный вид ACTION.json.rabl.

Например, мой index.json.rabl:

object @assets
attributes :kind, :description

Когда я выполняю следующие команды, объект Asset создается, но с нулевыми значениями:

curl -XPOST -d 'kind=house' 'http://localhost:3000/assets.json'

Кроме того, где указано соответствие между POST / assets.json и функцией "create"?

1 Ответ

1 голос
/ 07 марта 2012

Это нормально, потому что вы делаете неправильно в вызове curl. Вы передаете только аргументы kind, а не asset[kind], как вы хотите в вашем create методе с:

@asset = Asset.new(params[:asset])

Обновите ваш метод curl с помощью:

curl -XPOST -d 'asset[kind]=house' 'http://localhost:3000/assets.json'
...