3

ネストされたフォームをjson形式で表示するRailsアプリケーションがあります。

JSON 応答では、別のテーブルを表す id フィールドも表示しています。

そのIDに対応する名前を表示して、名前とIDの両方をjson形式で表示できるようにする方法。

私のコントローラーショーメソッド

def show
    @maintemplate = Maintemplate.find(params[:id])
    respond_with (@maintemplate) do |format|
      format.json { render :json => @maintemplate }
    end
  end

前もって感謝します....

4

2 に答える 2

4

これを試して:

render :json => @maintemplate.to_json(:include => { :user => { :only => :name } } )

これは、次のように、user_idキーをキーに置き換え、user値を のname属性のみに置き換えますuser

{
  "user_id": "12"
  "user": { "name": "..." }
  ...
}

その後、json 応答でユーザー名にアクセスできます["user"]["name"]。でユーザー ID にアクセスすることもできます["user_id"]

詳細については、 のドキュメントをas_json参照してください。

アップデート:

コメントで提供された情報を使用すると、これが実際に必要なものだと思います。

render :json => @maintemplate.to_json(:include => { :routine => { :include => :user, :user => { :only => :name } } } )
于 2012-11-29T04:40:01.977 に答える
1

呼び出しているクラスに必要な追加のメソッド属性を使用して、as_jsonメソッドに追加します。

class MainTemplate
  ...

  def name
    User.find(self.user_id).name
  end

  def as_json(options = {})
    options[:methods] = :name
    super(options)
  end

end
于 2012-11-29T14:29:15.480 に答える