Tip: Extjs + Rails

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

Комментарии

4 Комментариев к “Tip: Extjs + Rails”

  1. Snowcore 14.Июл.2008 в 6:38 пп

    Денис, а ты еще и на RoR пишешь? С каких пор? Уважаю, потому чтио сам никак не могу добраться до них )))

  2. Денис Солошенко 14.Июл.2008 в 6:48 пп

    2 Snowcore: На работе напрягут - доберешься ;)

  3. Snowcore 15.Июл.2008 в 12:10 пп

    Теперь понятно почему появилась статья о зарплате ))) К сожалению многие на фирмах “и кузнец и жнец…” к тому же это не всегда оплачивается нормально (я о себе) :(

  4. Horeca 2.Авг.2008 в 4:59 пп

    можно и осознано к этому придти
    есть много любителей посравнивать именно этих двоих зверей по скорости.
    Причем заранее ясно кто быстрее.

    А вот изобразить на пыхе нечто близкое по функционалу к RoR (именно с рельсами) - сразу поймете как на самом деле надо было сравнивать.
    Попробуйте симфони на чем-то крупном - и выкиньте его.

    PHP вообще моя любимая тема. Он просто бэст, и бэстно прост, как Калашников. Только есть ситации, когда бывает нужна ракета со спуниковым наведением, и вот тут средства надо правильно выбирать.
    Ибо нет тормозных языков - бывает только просер в архитектуре