Пишите разные HTML для ipad только в файле index.html

У меня есть сайт, на котором запущен рельс с помощью начальной загрузки. Существует сайт для мобильных устройств и планшетов. Мобильные и планшетные сайты имеют совершенно одинаковую функцию, за исключением немного отличающихся страниц индекса.

Я использовал этот Railscast для загрузки приложения на мобильное устройство.

Можно ли использовать другой URL-адрес, аналогичный используемому в статье для планшетов.

Например, для мобильного телефона, localhost:3000/pages/home?mobile=0

Это то, что можно использовать. Можем ли мы использовать что-то подобное для планшетов?

Подобно тому, как мы пишем медиа-запросы для CSS, возможно ли, что я пишу другой HTML-код в файле mobile.html и загружаю этот кусок кода для вкладок, поскольку мне нужно только небольшое изменение только для страницы индекса.

Пожалуйста, предложите.

2 ответа

Это должно быть ориентировано на рельсы

Вы хотите использовать request.user_agent:

if request.user_agent =~ /android|blackberry|iphone|ipad|ipod|iemobile|mobile|webos/i
 ## mobile
else
 ## not mobile
end 

Так что вы можете сделать что-то вроде этого:

#app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
   def mobile?
      request.user_agent =~ /android|blackberry|iphone|ipad|ipod|iemobile|mobile|webos/i
   end
   helper_method :mobile?
end

#app/views/pages/home.html.erb
<%= render "small_change" if mobile? %>

-

Некоторые ссылки:


Обновить

Вышеуказанное позволяет позвонить mobile? метод в любом представлении вам нужно.

Поскольку он находится в контроллере приложения, он имеет доступ к request объект (в противном случае вам придется передавать его в действие каждый раз).

Итак, когда вы спросили:

Так, где я должен поместить этот код в index.html для мобильных устройств? Поскольку я не хочу добавлять другие файлы

... нет "мобильного" index.html.erb. Вы можете позвонить mobile? метод в любом представлении вам нужно:

#app/views/pages/home.html.erb
<% if mobile? %>
   .... do something here.
<% end %>

Меньше - больше. Будь проще. Я предлагаю простое решение jquery/html/css. Есть один и только один файл. Измените различные области HTML-файла с помощью уникальных имен классов. В этом случае у меня есть настольное кодирование или мобильное кодирование. В вашем случае вы можете разделить его по своему усмотрению, очевидно, изменив оператор if, показанный ниже.

В HTML:

 <main id="top_main"  class="website_desktop">desktop content goes here.</main>

или же

<main  id="top_mobile" class="website_mobile">mobile content goes here.</main>

В сценарии:

if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) {
    // display stuff for mobile
    jQuery("#top_main").css("display", "none");
    jQuery("#top_mobile").css("display", "block");
}else {
    // hide all stuff for mobile, display desktop
    jQuery("#top_mobile").css("display", "none");
    jQuery("#top_main").css("display", "block");
} 

Идентификаторы используются для скрипта, классы используются для различных элементов управления CSS (в моем примере, мобильный и рабочий стол)

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