Лучшее, что нужно сделать, это настроить before_filter в контроллере приложения, который проверяет iPhone Mime-Type. Перейдите в config / initializers / mime_types.rb и добавьте эту строку
Mime::Type.register_alias "text/html", :iphone
А вот метод, который вызывается в фильтре before в моем ApplicationController.
def mobile_user_agent?
agent = request.env['HTTP_USER_AGENT']
return false if !agent
return :iphone if agent[/(Mobile\/.+Safari)/]
return :iemobile if agent[/IEMobile/]
return :blackberry_4_3 if agent[/BlackBerry.*4.3.0/]
return :blackberry_4_7 if agent[/BlackBerry.*4.7.0/]
return :android if agent[/Android/]
return false
end
Тогда в ваших контроллерах вы можете делать следующее в ваших контроллерах.
def index
@posts = Post.find(:all)
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @posts }
format.iphone # render index.html.iphone
end
end
Это позволяет вам отображать определенные виды iPhone. Вы можете сделать то же самое для всех видов мобильных телефонов, Android, Blackberry, Windows Mobile и т. Д. *
Я не могу взять на себя всю ответственность за это :) Майк Кларк и программисты Pragmatic представили подобное решение в Advanced Rails Recipes .
Мой единственный совет - если вы делаете в своем приложении много разных вещей для iPhone, то создайте отдельный контроллер под названием IPhoneViewController или что-то, что обрабатывает все вещи для iPhone.
Удачи! Если вам нужно что-то еще, дайте мне знать,
Kent