Если нет, как я могу сделать так, чтобы он был совместим с JSONP с моими запросами AJAX?
EDIT: Похоже, я не совсем понимаю, чего хочу достичь. Предположим, например, что у меня есть класс Post, который содержит такие атрибуты, как идентификатор, автор, теги и контент. Теперь для кодирования ответа JSON я бы использовал следующий ActiveModel::Serializer:
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"
}
]
})
В настоящее время я использую to_json для объекта Post и сохраняю результат в переменной с именем @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 для получения той же функциональности. Как я могу это сделать?
render json: @post, jsonp: callback_function
- person Ki Chjang   schedule 19.02.2014