mobile_fu рендеринг через AJAX, так что кажется - PullRequest
1 голос
/ 24 августа 2009

Мой контроллер отображает обычные html, mobile_fu и javascript следующим образом:

respond_to do |format|
  format.html {
    render :action => "full", :layout => "application" and return
  }
  format.mobile {
    render :action => "full", :layout => "application" and return
  }
  format.js {
    render :partial => "content", :layout => false and return
  }
end

Обычный HTML-рендеринг в порядке, использование AJAX из html-версии сайта работает нормально, но использование AJAX в мобильном браузере, похоже, всегда отображает блок format.mobile. Я использую jQuery при привязке его к событию нажатия кнопки, и мое тестирование на iPhone всегда заканчивается рендерингом блока format.mobile, приведенного выше.

$.ajax({
          beforeSend      : function(request) { request.setRequestHeader("Accept", "text/javascript"); },
          success         : function(response) {
            $("#content").append(response);
          },
          type            : 'GET',
          url             : url, //set somewhere else
          data            : data //set somewhere else
      });

Разве jQuery не улавливает событие нажатия (причудливость iPhone?), Или mobile_fu берет на себя ответственность и немного властен здесь? Кто-нибудь уже занимался этим или видел, что мне не хватает?

Ответы [ 2 ]

3 голосов
/ 24 августа 2009

Глядя на , код для mobile_fu показывает, что любой поступающий мобильный запрос будет установлен на мобильный. Изменение строки 73 на что-то подобное может сработать:

if is_mobile_device? && !request.xhr?
0 голосов
/ 25 июня 2010

На тот случай, если кто-то другой найдет это, если у вас есть другой javascript для мобильных устройств, вы можете сделать:

format.mobile {render :content_type => "application/javascript"}

(введите ваши js в action.mobile.rjs)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...