0

如果不是,我該如何使它與我的AJAX請求符合JSONP?活動模型序列化器是否可以與JSONP協同工作?

編輯:看來我不清楚我想達到什麼目的。比方說,我有一個Post類,其中包含id,author,tags和content等屬性。現在加載ActiveModel如下::串行就是我會用代碼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「/職位?jsoncallback = CALLBACK_FUNCTION」),我會能夠產生如下:

callback_function({ 
    "posts": [ 
    { 
     "id": 1, 
     "author": "John Doe", 
     "tags": "test", 
     "content": "Hello world" 
    } 
    ] 
}) 

目前我使用to_json一個帖子對象並將結果存儲到一個變量稱爲@posts_json,然後指定內容類型爲控制器文/ JavaScript和呈現出一個html.erb文件看起來像以下:

<% if params[:jsoncallback].blank? %> 
<%= @posts_json.html_safe %> 
<% else %> 
<%= params[:jsoncallback] %>(<%= @posts_json.html_safe %>) 
<% end %> 

我敢肯定你會同意這個解決方案實在是太醜了,而問題是,它已經開始給我由於to_json方法問題我在控制器中使用。

因此,我想使用ActiveModel :: Serializer來獲得相同的功能。我該怎麼做?

+0

讓我們看看一些代碼... – Severin

+0

@Severin完成...我希望AMS有一個選項,我可以做類似'render json:@post,jsonp:callback_function' –

回答

1

顯然,在普通的Rails中,render語法已經處理回調。只需傳入回調函數:params [:jsoncallback]作爲選項就可以實現。

點擊here和瀏覽在渲染JSON部分的文檔。

相關問題