rails 4在初始化器中使用应用程序助手 [英] rails 4 use application helpers inside initializers
本文介绍了rails 4在初始化器中使用应用程序助手的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
是否可以在 config / initializers / browser_blocker.rb
中包含/使用Application Helper方法?
Is it possible to include / use Application Helper methods inside of an config/initializers/browser_blocker.rb
?
我使用浏览器宝石来检测并阻止较旧的非现代浏览器。
I am using the browser gem to detect and block older non modern browsers.
Rails.configuration.middleware.use Browser::Middleware do
include ApplicationHelper
redirect_to :controller => 'error', :action => 'browser-upgrade-required' if browser_is_not_supported
end
我目前使用的Helper方法:
Helper method I am currently working with:
# test browser version
def browser_is_not_supported
return true unless browser.modern?
return true if browser.chrome? && browser.version.to_i < ENV['BROWSER_BASE_VERSION_GOOGLE'].to_i
return true if browser.firefox? && browser.version.to_i < ENV['BROWSER_BASE_VERSION_FIREFOX'].to_i
return true if browser.safari? && browser.version.to_i < ENV['BROWSER_BASE_VERSION_SAFARI'].to_i
return true if browser.opera? && browser.version.to_i < ENV['BROWSER_BASE_VERSION_OPERA'].to_i
return true if browser.ie? && browser.version.to_i < ENV['BROWSER_BASE_VERSION_MSFT'].to_i
end
推荐答案
这是实现它的一种方式:
This is one way to do it:
# lib/browser_util.rb
module BrowserUtil
def self.supported?(browser)
# your code ...
end
end
并将其从ApplicationHelper中包装以用于视图中
and wrap that from ApplicationHelper for use in views
module ApplicationHelper
def is_browser_supported?
BrowserUtil.supported?(browser)
end
end
在中间件中
Rails.configuration.middleware.use Browser::Middleware do
unless BrowserUtil.supported?(browser)
redirect_to :controller => 'error', :action => 'browser-upgrade-required'
end
end
UPDATE :它不需要位于单独的模块中(BrowserUtil)
UPDATE: it does not need to be in a separate module (BrowserUtil)
module ApplicationHelper
def self.foo
"FOO"
end
def foo
ApplicationHelper.foo
end
end
在中间件使用中
ApplicationHelper.foo
在视图中它将使用包含的方法
in views it would use the included method
foo
这篇关于rails 4在初始化器中使用应用程序助手的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文