[英]Outputting jSON in a rails app
好的,rails 3新開發者在這里。
我希望我的jquery能夠從rails 3應用程序中獲取項目的json對象。 這是我的控制器。
def yourprojects
@projects = Projects.all(current_user)
respond_to do |format|
format.html # index.html.erb
format.json { render :json => @projects }
end
end
我在jquery中添加了format.json行...我有:
$.ajax({url: '/projects/yourprojects', dataType: 'json'});
所以這應該工作我想。 而是服務器返回:“模板丟失”“缺少模板,,,,帶{:locale => [:en,:en] ,: handlers => [:rjs,:rhtml,:builder,:rxml,: erb],:formats => [:html]}在視圖路徑中“
你需要一個jsOn回歸的模板嗎? rails 3 app應該不知道如何格式化json?
路線文件:
resources :projects do
collection do
get 'yourprojects'
end
end
您可以為真實REST設置Accept: application/json
標頭,或者您可以將格式添加到URL以便快速解決:
$.ajax({url: '/projects/yourprojects.json', dataType: 'json'});
這不是Rails的問題,而是AJAX / jQuery不發送Accept標頭:試試這個:
$.ajax({
url: 'url_to_action', dataType: "json",
beforeSend : function(xhr){
xhr.setRequestHeader("Accept", "application/json")
},
success : function(data){
//.. do something with data
},
error: function(objAJAXRequest, strError, errorThrown){
alert("ERROR: " + strError);
}
}
);
如果您的所有AJAX請求都需要JSON,那么您可以全局設置標頭:
$.ajaxSetup({
dataType: 'json',
'beforeSend' : function(xhr){
xhr.setRequestHeader("Accept", "application/json")
}
});
其他選項是將.json
添加到路徑或data:{format: 'json'}
到選項的$.ajax
哈希。 Rails默認支持格式路徑后綴,用於resoures
路由。 試試看rake routes
。
:formats=>[:html]
這說服務器認為正在請求html
。 嘗試將.json
添加到您的路徑(和可能的路徑),這將強制格式化。 要做到這將需要一個像這樣的路線:
map.your_projects '/projects/yourprojects.:format',
:controller => 'projects',
:action => 'yourprojects'
不知怎的,某種程度上,對於這個請求, params[:format]
應該是"json"
,因此格式處理程序可以做正確的事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.