2009-08-24 26 views
1

我控制器再现常规的HTML,mobile_fu和JavaScript这样:mobile_fu渲染了AJAX如此看来

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的不要再追click事件(iPhone quirk?)还是mobile_fu负责,在这里有点霸道?任何人已经解决这个问题或看到我失踪?

回答

3

查看the code for mobile_fu显示任何进入的移动请求将被设置为移动。更改线路73这样的事情可能工作:

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

谢谢安迪,简单直接补丁那里,它的作品! – revgum 2009-09-04 00:50:00

0

万一别人发现这一点,如果你有一个移动设备不同的JavaScript,你可以这样做:

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

(把你的JS在action.mobile.rjs