Rails 3.2を使用しています。フォームがあり、ajax経由で投稿して、コントローラーにjsonを返してもらいたいです。
私は次のようなform_forヘルパーを使用しています:
= form_for(@object, :remote => true, :format => :json) do |f|
....
私のオブジェクトコントローラのcreateメソッドは次のようになります。
def create
respond_to do |format|
if @object.save
format.html { redirect_to @object }
format.json { render json: @object, status: :created, location: @object }
else
format.html { render action: "new" }
format.json { render json: @object.errors, status: :unprocessable_entity }
end
end
end
フォームは期待どおりにajaxlyに送信しています。しかし、コントローラーはjsonではなくhtmlを返しています!
firebugを使用してリクエストを検査し、ajaxリクエストのContent-Typehttpヘッダーがapplication/htmlに設定されていることを確認します。
これに関するドキュメントはかなりまばらです。:format =>:jsonは、フォームアクションに「.json」を追加するだけで、実際にはhttpヘッダーを変更しないようです。
また、:content_type =>:jsonを試しましたが効果はありません。
htmlを返したい場所が他にもあるので、コントローラーをハードコーディングしてjsonを返すことはできません...
では、form_forを使用するときにコントローラーにjsonをレンダリングするように指示する方法を知っている人はいますか?
助けてくれてありがとう