Rails способ обнаружить мобильное устройство?
Есть ли "способ рельсов", чтобы определить, использует ли пользователь мобильное устройство? Я имею в виду метод, который я могу использовать в erb, что-то вроде этого:
<% if mobile? %>
4 ответа
Вы можете сделать это таким образом, определив функцию, как показано ниже:
def mobile_device?
if session[:mobile_param]
session[:mobile_param] == "1"
else
request.user_agent =~ /Mobile|webOS/
end
end
Или вы можете использовать драгоценные камни для обнаружения мобильных устройств, таких как
Используйте гем браузера. Вы можете обнаружить браузер с помощью специального user_agent.
В application_helper.rb
:
def mobile_device
agent = request.user_agent
return "tablet" if agent =~ /(tablet|ipad)|(android(?!.*mobile))/i
return "mobile" if agent =~ /Mobile/
return "desktop"
end
Тогда вы можете использовать его в своих взглядах:
<% if mobile_device == "mobile" %>
Show something for mobile users.
<% end %>
Я бы посоветовал проверить device_detector, который довольно быстрый и простой в развертывании. Вам просто нужно передать ей строку user_agent, что можно сделать с помощью request.user_agent для Rails 5:
@user_agent = request.user_agent
@client = DeviceDetector.new(@user_agent)
@client.device_type
Примечание. Типы устройств могут быть следующими: рабочий стол, смартфон, планшет, консоль, портативный медиаплеер, телевизор, автомобильный браузер, камера.
Вы также можете решить эту проблему, просто включив <meta name="viewport" content="width=device-width, initial-scale=1.0">
на application.html.erb
тег заголовка
Пока ваш сайт отзывчив (например, с помощью Bootstrap), у вас все будет хорошо.