检测Web浏览器或移动设备以显示链接

fix*_*ate 4 mobile ruby-on-rails

我正在编写一个rails应用程序,需要为普通的Web浏览器用户提供移动用户的不同链接.例如,如果用户在移动设备上,我想显示:

<a href="instagram://user?username=<%= photo.author %>" target="_blank" class="btn btn-info btn-block"><i class="fa fa-instagram"></i> Captured by <%= photo.author %></a>
Run Code Online (Sandbox Code Playgroud)

如果用户在浏览器上我想显示:

<a href="http://instagram.com/<%= photo.author %>" target="_blank" class="btn btn-info btn-block"><i class="fa fa-instagram"></i> Captured by <%= photo.author %></a>
Run Code Online (Sandbox Code Playgroud)

做这个的最好方式是什么?谢谢

Ric*_*eck 9

浏览器数据以user_agent对象的形式出现:

#app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
   helper_method :mobile?

   private

   def mobile? # has to be in here because it has access to "request"
      request.user_agent =~ /\b(Android|iPhone|iPad|Windows Phone|Opera Mobi|Kindle|BackBerry|PlayBook)\b/i
   end
end
Run Code Online (Sandbox Code Playgroud)

这样您就可以在视图中使用以下内容:

#app/views/controller/view.html.erb
<% if mobile? %>
   ... do something for mobile
<% else %>
   ... do something else
<% end %>
Run Code Online (Sandbox Code Playgroud)

说实话,我不明白为什么人们硬编码他们的移动界面工作.如果您正确使用CSS媒体查询,则不应该对文件有任何问题,尽管您的情况似乎确实需要服务器端条件.