そうでない場合、AJAX リクエストで JSONP に準拠するようにするにはどうすればよいですか?
編集:私が達成したいことがはっきりしていないようです。たとえば、id、作成者、タグ、コンテンツなどの属性を含む Post クラスがあるとします。次の ActiveModel::Serializer は、JSON 応答のコーディングに使用するものです。
class PostSerializer < ActiveModel::Serializer
attributes :id, :author, :tags, :content,
end
今コントローラーで、私は次のようなことをしたでしょう
render :json => @post
このような JSON ファイルを生成するには
{
"posts": [
{
"id": 1,
"author": "John Doe",
"tags": "test",
"content": "Hello world"
}
]
}
ここでの私の目的は、JSONP を使用することです。これにより、誰かがリクエストで jsoncallback パラメーターを渡すと (GET '/posts?jsoncallback=callback_function' など)、次を生成できるようになります。
callback_function({
"posts": [
{
"id": 1,
"author": "John Doe",
"tags": "test",
"content": "Hello world"
}
]
})
現在、私は Post オブジェクトで to_json を使用し、結果を @posts_json という変数に格納し、次にコントローラーで Content-Type を text/javascript として指定し、次のような html.erb ファイルをレンダリングしています。
<% if params[:jsoncallback].blank? %>
<%= @posts_json.html_safe %>
<% else %>
<%= params[:jsoncallback] %>(<%= @posts_json.html_safe %>)
<% end %>
このソリューションが本当に醜いことに同意していただけると思います。問題は、コントローラーで使用している to_json メソッドが原因で問題が発生し始めていることです。
そのため、ActiveModel::Serializer を使用して同じ機能を取得したいと考えています。どうすればそれを行うことができますか?