1

私は、関連付けられたEメールオブジェクトとメッセージオブジェクトを含むユーザーの連絡先をレンダリングするRails 3.1コントローラを持っています。JSONをRailsコントローラでレンダリングするように指示します。

 
    @contacts = @current_user.contacts.order('last_name asc', :include => [:emails, :messages]) 
    render json: @contacts, :include => [:emails, :messages] 

ご覧のとおり、デフォルトのIDではなく、姓で連絡先を並べ替える必要があります。私は現在、他の関連するオブジェクトと共にユーザーオブジェクトをレンダリングする必要があります。だから私は、次のことを試してみましたが、もちろん連絡先が適切な順序ではありません。

 
    render :status => 200, :json => { 
     :user => @current_user.as_json(
     :include => { 
      :foos => { 
      :except => :user_id 
      }, 
      :contacts => { 
      :except => :user_id, 
      :include => [:emails,:messages] 
      }, 
      :bars => { 
      :except => :user_id 
      } 
     } 
    ) 
    } 

私は​​で任意のヘルプを見ていない、と私は右の構文を見つけることができませんでした試行錯誤。

答えて

1

この場合、Ruby/SQLで連絡先を注文し、as_jsonとそのさまざまな:include/:exceptメソッドを使用する代わりに、独自のJSONを作成してレンダリングします。

データのハッシュを作成し、それを送信してレンダリングします。

JSONの作成を容易にするライブラリには、さまざまな種類があります。 JBuilderはそのようなライブラリの1つです。他の同様のライブラリへのリンクについては、JBuilderページの下部を見てください。

+0

私は[json_builder](https://github.com/dewski/json_builder)を使用してしまいました。まさに私が探していたもの。私のレンダリング時間を約55%短縮しました。 –

関連する問題