2012-03-07 94 views
1

我正在開發一個rails 3.2和rabl的API。與rails 3.2和rabl的API

基本上我有一個模型「資產」,和一個非常簡單的相關聯的控制器:

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 

當我發出以下命令,創建了資產的對象,但空值:

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

此外,在哪裏POST/assets.json和「create」函數之間的映射關係是否指定?

+0

的映射在routes.rb中規定,當你做'資源:assets'。你可以發佈你的rabl視圖模板嗎? – 2012-03-07 08:16:02

+0

@ jack-chu謝謝,我用一個我使用的rabl文件的例子更新了這個問題。關於映射,我怎樣才能將POST/assets.json映射到名爲「new」的方法呢? – Luc 2012-03-07 12:00:08

回答

1

這很正常,因爲您在捲曲調用上做錯了。您通過在args只kindasset[kind]像你想在你的create梅索德有:

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

更新你捲曲梅索德有:

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

謝謝,它的工作更好:) – Luc 2012-03-07 12:01:54

+0

只是爲了解params [:asset]的訪問,不應該使用以下命令嗎? curl -H「Accept:application/json」-H「Content-type:application/json」-X POST -d'「asset」:{「kind」:「flat」}''http:// localhost:3000/assets.json」。 params [:asset]留空。 – Luc 2012-03-09 06:35:55

+0

我不是一個捲曲專家:(看你的應用程序日誌,看看是否得到的參數是你想要的。 – shingara 2012-03-09 08:33:05