是否有“rails 方法”来检测用户是否正在使用移动设备?我的意思是我可以在 erb 中使用的方法,如下所示:<% if mobile? %>
是否有“rails 方法”来检测用户是否正在使用移动设备?我的意思是我可以在 erb 中使用的方法,如下所示:
<% if mobile? %>
您可以通过定义如下所示的函数来实现这一点:
def mobile_device? if session[:mobile_param] session[:mobile_param] == "1" else request.user_agent =~ /Mobile|webOS/ end end
或者你可以使用 gem 来检测移动设备
您能否将答案更新为您的答案和下面的答案,因为浏览器 gem 更常用,如 ruby-toolbox.com/projects/browser 中所示
代理嗅探是一种非常不完善的方法,无论你选择哪种嗅探方式,随着时间的推移,它的准确性都会降低
使用 browser gem。您可以通过自定义 user_agent 检测浏览器。
您知道 Google Chrome 的移动浏览器模拟器是否可以使用该 gem 检测 browser.mobile 吗?
浏览器很好,但需要 > ruby 2。如果你被困在 1.9.3(像我一样)请查看 github.com/tscolari/mobylette
浏览器似乎在 2020 年仍然得到维护,并且随着时间的推移,其使用量只会增加。
在 application_helper.rb :
application_helper.rb
def device agent = request.user_agent return "tablet" if agent =~ /(tablet|ipad)|(android(?!.*mobile))/i return "mobile" if agent =~ /Mobile/ return "desktop" end
然后你可以在你的视图中使用它:
<% if device == "mobile" %> Show something for mobile users. <% end %>
我建议你看看 device_detector,它部署起来非常快而且容易。你只需要将 user_agent 字符串传递给它,这可以使用 Rails 5 的 request.user_agent 来完成:
@user_agent = request.user_agent @client = DeviceDetector.new(@user_agent) @client.device_type
注意:设备类型可以是以下之一:台式机、智能手机、平板电脑、控制台、便携式媒体播放器、电视、车载浏览器、相机
https://github.com/podigee/device_detector
您也可以通过简单地 在 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 标题标签 application.html.erb 添加以下内容
<meta name="viewport" content="width=device-width, initial-scale=1.0">
application.html.erb
只要您的网站响应迅速(例如使用 Bootstrap),就没问题。
这个问题旨在检查用户代理是否是移动设备。您的答案旨在实现响应行为,这与问题意图截然不同。