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 

Примечание. Типы устройств могут быть следующими: рабочий стол, смартфон, планшет, консоль, портативный медиаплеер, телевизор, автомобильный браузер, камера.

https://github.com/podigee/device_detector

Вы также можете решить эту проблему, просто включив <meta name="viewport" content="width=device-width, initial-scale=1.0"> на application.html.erb тег заголовка

Пока ваш сайт отзывчив (например, с помощью Bootstrap), у вас все будет хорошо.

Другие вопросы по тегам