如果不是,我怎样才能使它与我的 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 来获得相同的功能。我该怎么做?