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

Я разрабатываю 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 и функцией «создать»?


person Luc    schedule 07.03.2012    source источник
comment
Отображение указывается в route.rb, когда вы делаете resources :assets. Можете ли вы опубликовать свой шаблон просмотра rabl?   -  person Jack Chu    schedule 07.03.2012
comment
@ jack-chu спасибо, я обновил вопрос, указав пример файла rabl, который я использую. Что касается сопоставления, как я могу сопоставить POST/assets.json, например, с методом с именем new?   -  person Luc    schedule 07.03.2012


Ответы (1)


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

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

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

curl -XPOST -d 'asset[kind]=house' 'http://localhost:3000/assets.json'
person shingara    schedule 07.03.2012
comment
просто чтобы понять доступ к params[:asset], не должна ли работать следующая команда? curl -H Accept: application/json -H Content-type: application/json -X POST -d 'asset:{kind:flat}' 'localhost:3000/assets.json'. params[:asset] остается пустым. - person Luc; 09.03.2012
comment
Я не эксперт по завиткам :( Посмотрите в своем журнале приложений, чтобы узнать, получаются ли параметры такими, как вы хотите. - person shingara; 09.03.2012