2017-08-11 16 views
0

私は2つの関連モデルプロファイルと作業能力を持つユーザーモデルを持っています。ユーザーには1つのプロファイルがありますが、さまざまな種類の作業には多くの作業機能があります。私は、次の使用のJBuilderなどの組み合わせJSONオブジェクトとしてそれらをリストする:json jbuilderを使用してモデルをjsonオブジェクトに変換する方法は?

{profile: { first_name: ..., 
      last_name: ..., 
      ... 
      work_capabilities: [ { capability_1: ..., 
            ... 
           }, 
           ... 
           ] 
     } 

}

現在、私は明示的にすべてのプロファイル・キーをリストアップし、json.extractを使用することによって、これを達成することができます!

json.profile do 
    json.extract! @profile, :first_name, ... 
    json.work_capabilities @work_capabilities 
    end 

私の質問は、すべてのプロファイル属性を明示的に記載せずに上記のオブジェクトを作成できますか?私はプロファイル内のすべての属性を必要とし、属性を追加するたびにjbuilderファイルを編集して編集する必要はありません。

+0

は、あなたが望む形式を選択できるはずです... jsonはその1つです。 https://stackoverflow.com/questions/14330110/how-to-use-rails-format-json#14330187 –

+0

それは私が探しているものではありません。私はjbuilderでそれを行う方法を探しています。 – sakurashinken

答えて

0

あなたindex.json.jbuilderに

def index 
    @profile = User.find(params[:id]).profile 
    @capabilities = User.find(params[:id]).capabilities 
end 

、あなたのコントローラ、例えば下記行うことによって、これを達成することができますが

json.user do 
    json.profile do 
    json.first_name @profile.first_name 
    json.last_name @profile.first_name 
    end 
    json.work_capabilities @work_capabilities.each do |work_capability| 
    json.capability_1 work_capability.capability_1 
    json.capability_2 work_capability.capability_2 
    . 
    . 
    . 
    end 
end 
+0

これは本当に質問に答えるものではありません。「私の質問は、すべてのプロファイル属性を明示的にリストすることなく上記のオブジェクトを作成できますか?」です。プロファイル属性はすべて明示的にリストされています。 – vijoc

+0

json.mergeを試してみてください!プロファイル属性用 –

0

私は、これはあなたの問題を解決すると思います

json.profile do 
    json.array! @profile_object 
end 
コントローラー内の
関連する問題