`render json:{}`にRails 3.1でJSONレイアウトを使用する簡単な方法はありますか?

Rails 3.1以降でJSONをレンダリングするためのレイアウトを指定することは可能ですか(以前のバージョンのRailsでも簡単に行うことはできませんでした)

私はこのようなヘルパーを使っています:

def render_as_json(obj, status = 200, *args)
  render(inline: obj.to_json(*args), layout: 'default', status: status)
end

render json:obj のようなレイアウトはレンダリングされません。

レイアウトファイルにいくつかのメタデータを入れたいだけでした。

<%- @content = yield -%>
{
  "data":<%= @content.present? ? raw(@content) : '{}' %>,
  "metadata":<%= raw(json_layout_metadata.to_json) %>
}
2

1 答え

私はこれが古かったことを知っていますが、私はJSONレイアウトとXMLレイアウトを使用しようとしていましたが、あなたの質問を見つけたので、何とか私の問題を解決するのを助けてくれました。同じ:

アプリケーションのレイアウトフォルダ(application.html.erbの同じディレクトリにあります)にテンプレートファイルを作成し、そのファイルを拡張子 ".json.erb"にします。名前を "json_layout.json.erb"としましょう。 。あなたが追加したい一定のコンテンツを何でも入れ、動的データを表示したい場所に

<%= yield %>

私の場合、これは私のテンプレートです:

{"status": <%= response.status %>,"data": <%= yield %>}

JSONを表示するコントローラーで、respond_toブロックに次の形式を使用します。

format.json { render :inline => @the_object.to_json(any_additional_options) , :layout => "json_layout.json.erb" }

to_xmlメソッドのオプションを入れるXMLの場合はちょっと注意してください

:skip_instruct => true

レイアウトに自分自身を追加するので、おそらく完全なXMLはデフォルトで生成される必要はありません。

2
追加された