Для тех кто только использует связку Extjs и Rails.
В рельсах есть такой полезный метод: respond_to, который позволяет отдавать данный в нужном формате будь-то html, xml, json.
Например:
1 2 3 4 5 6 7
| respond_to do |format|
format.json {
data = {:success=>true}
render :json=>data.to_json
}
format.html { redirect_to(:controller => 'blablabla', :action => 'index', :id => 'all') }
end |
В данном случае, если запрос пришел Аяксом — то просто вернуть ответ в формате json: {:success=>true}.
Если же был обычный переход в браузере на данную страницу — то отредиректить на другую страницу.
При это рельсы пытаются определить, в каком формате тебе нужен ответ анализируя заголовки.
И все казалось бы без проблем, но если вы пытаетесь создать аяксовый запрос используя extjs — рельсы выполнят код блока html.
Безобразие!
Чтобы вразумить их, придется использовать дополнительный параметр в аяксовом запросе:
headers: { ‘Accept’ : ‘application/json’ },
Например так:
1 2 3 4 5 6 7 8
| Ext.Ajax.request({
url : my_url
method: 'POST',
headers: { 'Accept' : 'application/json' },
callback: function ( options, success, response ) {
alert('ok!');
}
}); |