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

Разработвам API с rails 3.2 и rabl.

По принцип имам модел "Актив" и много прост свързан контролер:

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"?


person Luc    schedule 07.03.2012    source източник
comment
Съпоставянето е посочено в routes.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 -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