2009-08-24 6 views
1

Mon contrôleur rend html régulière, mobile_fu et javascript en tant que tel:mobile_fu rendu sur AJAX il semble

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 régulier rend bien, en utilisant AJAX de la version html du site fonctionne très bien , mais en utilisant AJAX sur le navigateur mobile semble toujours rendre le bloc format.mobile. J'utilise jQuery lors de la liaison à l'événement d'un simple clic, et mes tests sur l'iPhone finit toujours rendre le bloc format.mobile ci-dessus ..

$.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 
     }); 

est-jQuery ne pas attraper l'événement click (iPhone Quirk?) ou est mobile_fu prendre en charge et être un peu autoritaire ici? Quelqu'un at-il déjà abordé ceci ou voir ce qui me manque?

Répondre

3

Si l'on regarde the code pour mobile_fu, cela signifie que toute requête mobile entrant sera définie sur mobile. Modification de la ligne 73 à quelque chose comme cela pourrait fonctionner:

if is_mobile_device? && !request.xhr? 
+0

Merci Andy, simple patch directement là-bas, et cela fonctionne! – revgum

0

Juste au cas où quelqu'un d'autre trouve cela, si vous avez javascript différent pour les appareils mobiles, vous pouvez le faire:

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

(mettre vos Js action.mobile.rjs)

Questions connexes