我想为rails 4

时间:2016-05-27 09:36:00

标签: ruby ruby-on-rails-4 mobile rubygems

我安装了rack-user_agent gem并编辑了application_controller,如下所示,但无效。我的是rails4。

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  before_action :detect_mobile 

  private 
     def detect_mobile
        case request.user_agent
        when /mobile/i
            request.variant = :mobile
        end
     end 
 end

app&gt;意见&gt;页面&gt; home.html.erb&amp; mobile.html.erb

有谁知道如何解决这个问题?或者有人知道更好的方法来建议吗?

2 个答案:

答案 0 :(得分:0)

如果内容几乎与网络和移动视图相同,那么你必须使用相同的HTML代码才能使用css @media screen

w3schools css

如果您只想在移动视图下显示特定文件,那么您可以使用rack-user_agent gem

在application_helper.rb

中创建一个帮助器
def is_mobile?
   request.from_smartphone?
end

并在需要仅在移动设备上呈现文件的视图中使用此帮助程序,如:

<%= 
if is_mobile?
    render "mobile_file"
end
%>

如果您有两个不同的移动设备和网络视图,并且您希望控制器根据变体返回视图 那么你可以使用像

class YourController < ApplicationController

  def your_method
    #your code
    if view_context.is_mobile?
      render "mobile_view"
    else
     render "web_view"
   end

  end
end

答案 1 :(得分:0)

试试这个宝石......

gem 'mobile-fu'

https://github.com/brendanlim/mobile-fu

希望这对你有用。