rails 4在初始化器中使用应用程序助手 [英] rails 4 use application helpers inside initializers

查看:108
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆