2010-12-16 7 views
6

私はと呼ばれるポストメソッドは、それが次のことを行う必要があり参加さ: 1)新しいオブジェクト 2を作成する)JSONオブジェクトここrespond_with ruby​​ on railsで作業していません。どうして?

で応答し、私のコードは次のとおりです。何らかの理由で

class GameController < ApplicationController 

    respond_to :json 

    def join 
    @p = Player.new(:name => params[:name]) 
    @p.save! 
    respond_with({:uuid => @p.uuid}) 
    end 
end 

undefined method `model_name' for NilClass:Class 

私が何かにrespond_withコールを変更する場合は単純な私はまだ取得エラー、例えば:respond_withコールは常に、このエラーで失敗し

respond_with "hello" 

このエラーを生成する:私が間違って

undefined method `hello_url' for #<GameController:0x1035a6730> 

何をやっています? JSONオブジェクトを送り返したいだけです!

PS、私のルート・ファイルは次のようになります。

match 'join' => 'game#join', :via => :post 
+1

を働くだろうあなたは 'respond_with'を捨てる方がいいでしょうし、ちょうど古い平野を使用して'format.json {render:json}'などを使用して、標準のコントローラアクションから逸脱したい場合に使用します。 – zetetic

+0

これはまさに私がやったことです:-) –

答えて

7

私はrespond_withメソッドは、引数としてリソース(@p)に合格する必要があります信じています。ここにはsome documentation for the methodがあります。

これを試してください:あなたはまた、このようなJSONをレンダリングすることができ

respond_with @p, :only => [:uuid] 

render :json => { :uuid => @p.uuid } 
+2

私は実際にrender:jsonを使ってしまいました。これは一貫してよりうまく機能しました。 –

+0

私もjsonを使ってこの問題を解決しました。ありがとうございました。 – botbot

4

またrespond_with {:uuid => @p.uuid}, :location => nil

関連する問題