2009-08-24 7 views
1

Mein Controller regelmäßig html, mobile_fu und Javascript als solche macht:mobile_fu über AJAX-Rendering so scheint es

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 

Regular html macht fein, AJAX aus der HTML-Version der Website funktioniert gut , aber die Verwendung von AJAX im mobilen Browser scheint immer den format.mobile Block zu rendern. Ich bin mit jQuery, wenn es um das Click-Ereignis einer Schaltfläche zu binden, und meine Tests auf dem iPhone endet immer über den format.mobile Block Rendering ..

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

Ist jQuery nicht das Click-Ereignis zu kontrollieren (iPhone Quirk?) oder ist mobile_fu verantwortlich und ein wenig überheblich hier? Hat schon jemand das angepackt oder sieht, was ich vermisse?

Antwort

3

Mit Blick auf the code für mobile_fu zeigt, dass alle mobile Anfrage auf mobile festgelegt wird. Ändern Linie 73 zu so etwas wie dies funktionieren könnte:

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

Dank Andy, einfach unkompliziert Patch dort, und es funktioniert! – revgum

0

Nur falls jemand anderes dies findet, wenn Sie verschiedene Javascript für mobile Geräte haben, die Sie tun können:

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

(setzen Sie Ihre js in action.mobile.rjs)

Verwandte Themen