これにはいくつかの方法があります。
def newItem
@Item = Item.create(:description => params[:description], :type_id => params[:type])
render json: @Item
end
respond_doを使用してください:アプローチはRailsの3.1
コール(。HTMLレンダリングが非existantとなりますので、このアプローチは、JSONのAPIのみアプローチするのに便利です)、あなたの方法で直接レンダリングするためのもので、以下に説明しますブロック:
def newItem
@Item = Item.create(:description => params[:description], :type_id => params[:type])
respond_to do |format|
if @Item.save
format.html { redirect_to @Item, notice: 'Item was successfully created.' }
format.json { render json: @Item, status: :created, location: @Item
else
format.html { render action: "new" }
format.json { render json: @Item.errors, status: :unprocessable_entity }
end
end
end
は、あなたのコントローラあなたが望む応答形式を教える:
class ContributionsController < ApplicationController
# Set response format json
respond_to :json
...
def newItem
@Item = Item.create(:description => params[:description], :type_id => params[:type])
respond_with @Item #=> /views/contributions/new_item.json.erb
end
アイテムの検証の失敗を持っている場合は
は、あなたが戻ってIDを取得することはできません、またそれは、(HTTP応答コード以外の)失敗を報告します作成...「落とし穴」の可能性
に以下を追加します。あなたのモデル。それは猫の皮を剥ぐために複数の方法が常にあります
class Item < ActiveRecord::Base
...
# includes any validation errors in serializable responses
def serializable_hash(options = {})
options = { :methods => [:errors] }.merge(options ||= {})
super options
end
JSONレスポンスの中にハッシュエラーで検証失敗を含めます。私はこれが助けることを願っています