Denis.in.ua

Блог имени Меня

Tip: Extjs + Rails

4 comments

Для тех кто только использует связку 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!');
            }
        });

Written by Денис Солошенко

Июнь 27th, 2008 at 1:24 дп

Posted in Javascript,Rails