2012-05-03 15 views
0

私のモデルの1つに関連するエラーが発生しました。それをUnitとしましょう。次のコードでは、エラーが発生します。as_json [`timeout`メソッドの引数が間違っています!]

format.json { render :json => @units.as_json } 

エラーは約誤ったパラメータ数(0の1)です。

+0

エラーのバックトレースは何ですか? –

+0

まず、モデルで定義した 'as_json'を完全にコメントアウトしてみてください。 Railsはデフォルトで作成しますので、実際には必要ありません。生成されたデフォルトのjsonがあなたのニーズを満たしていない場合は、それをカスタマイズしてカスタマイズすることができます。 –

+0

@KevinBedellコメントアウトしても、それと同じエラーです。 –

答えて

0

私はこの問題を解決しました。 Railsのソースから:

module Serialization 
    def serializable_hash(options = nil) 
     options ||= {} 

     attribute_names = attributes.keys.sort 
     if only = options[:only] 
     attribute_names &= Array.wrap(only).map(&:to_s) 
     elsif except = options[:except] 
     attribute_names -= Array.wrap(except).map(&:to_s) 
     end 

     hash = {} 
     attribute_names.each { |n| hash[n] = read_attribute_for_serialization(n) } # exception here 

     # ... 
    end 

    alias :read_attribute_for_serialization :send 

    # ... 
    end 

    # ... 
end 

したがって、実際のエラーは、たとえば次のような呼び出しによって返されたメソッドの1つです。 Unit.first.attributes.keys.sort["dev_id", "flags", "id", "inote", "ip", "location_id", "model_id", "name", "period", "phone", "port", "snote", "timeout"])は私にそれに引数を渡すことを期待しています。このメソッドはtimeoutですが、それはいくつかのプライベートメソッドです。したがって、問題の正しい解決方法は、この属性の名前を別のものに変更することです。

0

私はあなたが望むものを信じています。あなたはあなたの関係が正しくMonitoringObjectUnitモデルの間で設定している場合

def scheme 
    @object = MonitoringObject.restricted_find params[:id], session[:client] 

    @units = Unit.where("object_id = ?", @object.id) 

    respond_to do |format| 
    format.html 
    format.json { render :json => @units[0] } 
    end 
end 

または、

def scheme 
    @object = MonitoringObject.restricted_find params[:id], session[:client] 
    @units = @object.units 

    respond_to do |format| 
    format.html 
    format.json { render :json => @units[0] } 
    end 
end 

あなたは空の:exceptパラメータでそれを供給しています。

JSON応答に含めたくない属性がある場合は、:exceptという条件を使用します。

rails guide on views and renderingによれば、.to_jsonを指定する必要はありません。自動的に呼び出されます。

問題はどこかの.restricted_findメソッドにある可能性があります。あなたはスタックトレース全体を投稿することができますか?それを含むgithub要点にリンクすることはできますか?

+0

同じことをやってみました。 –

+0

更新されたanswer plsを確認してください。 –

+0

更新された質問に全体のアクションメソッドを入れました。 .as_jsonを削除しても、まだ動作しません。 –

関連する問題