Методы обнаружения браузера Rails - PullRequest
51 голосов
/ 16 января 2011

Привет всем, мне было интересно, какие методы являются стандартными в отрасли для определения браузеров в Rails?Есть ли где-нибудь гем, библиотека или пример кода, который может помочь определить браузер и применить класс или идентификатор к элементу тела HTML-кода?Спасибо, мне просто интересно, что все используют и есть ли принятый метод для этого?

Я знаю, что мы можем получить user.agent и разобрать эту строку, но я не уверен, что этоэто приемлемый способ обнаружения в браузере.

Кроме того, я не пытаюсь обсуждать здесь обнаружение функций, я прочитал несколько ответов на это в StackOverflow, все, что я спрашиваю, это то, что вы, ребята,сделано.

[ОБНОВЛЕНИЕ]

Так что благодаря faunzy на GitHub я немного разбираюсь в проверке пользовательского агента в Rails, но все еще не уверен, что этоэто лучший способ сделать это в Rails 3. Но вот что я получил до сих пор:

def users_browser
user_agent =  request.env['HTTP_USER_AGENT'].downcase 
@users_browser ||= begin
  if user_agent.index('msie') && !user_agent.index('opera') && !user_agent.index('webtv')
                'ie'+user_agent[user_agent.index('msie')+5].chr
    elsif user_agent.index('gecko/')
        'gecko'
    elsif user_agent.index('opera')
        'opera'
    elsif user_agent.index('konqueror')
        'konqueror'
    elsif user_agent.index('ipod')
        'ipod'
    elsif user_agent.index('ipad')
        'ipad'
    elsif user_agent.index('iphone')
        'iphone'
    elsif user_agent.index('chrome/')
        'chrome'
    elsif user_agent.index('applewebkit/')
        'safari'
    elsif user_agent.index('googlebot/')
        'googlebot'
    elsif user_agent.index('msnbot')
        'msnbot'
    elsif user_agent.index('yahoo! slurp')
        'yahoobot'
    #Everything thinks it's mozilla, so this goes last
    elsif user_agent.index('mozilla/')
        'gecko'
    else
        'unknown'
    end
    end

    return @users_browser
end

Ответы [ 3 ]

59 голосов
/ 11 декабря 2011

Gem browser специально разработан для обнаружения браузера в Rails.

23 голосов
/ 17 января 2011

На GitHub есть библиотека ruby: https://github.com/gshutler/useragent

Я сам использую ее, и она работает так, как рекламировалось до сих пор.Для вашего случая использования вы, вероятно, могли бы вызвать библиотеку из вспомогательного метода в вашем проекте Rails или чего-то подобного.,В случае, если он не доступен, вы всегда можете представить метод контроллера в качестве помощника (используя AbstractController::Helpers::ClassMethods#helper_method).

5 голосов
/ 16 января 2011

Попробуйте request.env['HTTP_USER_AGENT'], это вернет User Agent вашего клиента.Также есть быстрый помощник, опубликованный Хьюберт Лепицки

...