如何显示保存到数据库中的用户代理字符串中的特定信息



>我正在使用地理位置,并且将一串用户代理保存到我的数据库中,如下所示:

Mozilla/5.0(Macintosh;Intel Mac OS X 10_13_6( AppleWebKit/537.36 (KHTML, like Gecko( Chrome/68.0.3440.106 Safari/537.36

在上面的字符串的情况下,我想在我的视图中输出的信息是Macintosh; Intel Mac OS X 10_13_6。因此,在前端/视图中,我不想将整个数据输出为数据库中的数据。我想从这些信息中选择的只是显示用户用于登录应用程序的设计,我不知道我将如何只显示我想要的内容。任何帮助或指向我应该做什么的指示将不胜感激。

视图

.row
.panel.panel-primary
.panel-heading
span = t('admin_header.traffics')
.panel-body
= table_for(@traffic, class: 'table table-condensed table-hover') do |t|
- t.column :ua, 'Device Used', class: 'col-xs-1' # But this shows all the string which I do not want, I only want specific details from it.

以下是将用户代理字符串保存到数据库中的代码:

def save_signup_history(member_id)
SignupHistory.create(
member_id: member_id,
email: @member.email,
ip: request.remote_ip,
accept_language: request.headers["Accept-Language"],
ua: request.headers["User-Agent"], #Here is User Agent
login_location: get_ip_location
)
end

我唯一能想到的就是使用.remove方法,但我认为这不是解决我问题的最佳方法。

使用user_agent宝石怎么样?

在您给出的具体示例中,您可以使用:

user_agent = request.env['HTTP_USER_AGENT']
user_agent.match(/(.*?)/)[0]

但是,这可能并不涵盖所有情况,并且使用考虑各种选项的 gem 或代码是您最好的选择。

您可以使用扫描方法来获取所需的字符串。 例:

user_agent = Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36

然后

user_agent.scan(/Mac.*_6/)

应该给你你想要的字符串。您可以根据需要对其进行修改。

最新更新