2012-02-25 4 views
0

私はグループに属するオーダーのレール2.1アプリを持っています。 私はjsonで注文を返したい、グループ(具体的には1つのテーブル列のみ)と注文のためのいくつかのメソッドを含める。Rails 2.1 to_json、インクルードとメソッドの投げ方にエラーがあります

は、私は私のショーメソッドでこのコードを持っている:私はグループを必要とし、単に「方法」と「のみ」を使用してうまく働いていなかった

@order = Order.find(params[:id]) 
render :json => @order.to_json(:include => { :group => { :only => :article_cap }}, :methods => [:fee, :get_url], :only => [:id, :group_id]) 

前に。今、私はグループ「を含める」する必要があり、私はこのエラーを取得する:私だけ行う場合には、正常に動作します

ArgumentError (wrong number of arguments (0 for 1)): /home/name/.rvm/gems/[email protected]/gems/activerecord-2.1.0/lib/active_record/associations/association_proxy.rb:177:in `get_url'

...

含める、または唯一の方法を、私は一度に両方をしない場合。何か案は?

EDIT:関連付けられた、含まれているグループモデルでget_urlを呼び出そうとしています(これは、orderと同じメソッドですが、何かを渡す必要があります)。

:include => { :group => { :methods => :get_url } } 

この問題は、次のように書かなければならないと思いました。 @orderからメソッドを含めることができないようです。

答えて

1

レールが何をしようとしているのかを考えた後(プライマリモデルの代わりにインクルードモデルのメソッドにアクセスする)、インクルードされたモデルのいくつかのメソッドを追加するだけで済むようになりました。私は何も追加しない)。これをチェックアウト:

render :json => @order.to_json(
    :methods => [:get_url, :link_expired, etc...], 
    :include => { :group => { :methods => [], :only => :article_cap }}, 
    :only => [:id, :group_id] 
) 

を私が含まれるグループのための方法の空の配列を追加し、レールが、私が追加されたメソッドは、グループのためであってはならないことを考え出しました。私は誰もこの問題を抱えていないことは奇妙で、どこにでも言及しているのを見たことがありません。おそらくそれは予想される動作です。うまくいけば、これは他の誰かに役立ちます!

+0

これはレール4に対応していますか? –

+0

私は確信していません、私はまだ4を使用する機会を得ていません。 – d3vkit

関連する問題