【问题标题】:rails 4 engine optional shared helperrails 4 engine 可选的共享助手
【发布时间】:2013-07-11 09:44:08
【问题描述】:

我将引擎升级到 Rails 4,但在尝试配置可选的共享帮助程序时遇到问题。帮助程序Assessable::DisplayHelper 有两个只渲染 html 的方法。

我所说的可选是

  • 所需的默认配置是帮助程序应可用于 main.app 以在引擎外部使用,但隐藏详细信息。 (html 是从引擎生成的哈希生成的,但被主应用程序使用)
  • 一个可选的生成器将帮助程序安装在 helpers/assessable/display_helper 中,应用用户可以根据需要对其进行修改。

可选的生成器工作正常,覆盖了引擎中的帮助器,但我想不出一种方法来使默认模式工作。

我已阅读 rails 4 发行说明中有关帮助程序加载顺序的说明,但不确定我需要更改什么。关于我尝试过的一切

  • helper Assessable::DisplayHelper 添加到应用程序控制器(不是首选)
  • 试图将Assessable::DisplayHelper 包含在一个存根助手中。
  • 黑暗中的其他一些刺伤

产生和错误:

RuntimeError: Circular dependency detected while autoloading constant Assessable::DisplayHelper
...
from /Users/me/.rvm/gems/ruby-2.0.0-p247@rails4/gems/actionpack-4.0.0/lib/action_controller/railties/helpers.rb:17:in `inherited'
from /Users/me/work/pm/app/controllers/application_controller.rb:1:in `<top (required)>'

我在类和助手中的 Display 函数之间来回切换。我切换回助手,因为我无法在主应用程序中安装类。目标是让 `{class.}display_xxx(hash,post) 使用默认或可选配置。

对这两种方法的任何建议都会有所帮助。

【问题讨论】:

  • 一个问题在我的案例中解决了这类问题。你可以试一试吗?请将此添加到您的 development.rb:config.middleware.delete Rack::Lock stackoverflow.com/a/18857992/751716

标签: ruby-on-rails-4


【解决方案1】:

我放弃了。至少现在知道有人在看 rails4。

我最终使用了一个旧建议并在应用程序帮助程序目录中生成了一个包含的帮助程序 - 而不是一个名称空间目录。不想我想做,但也许以后某个时候我会想出来的。 install:helper 方法只是将 helper 替换为包含完整代码的包含。

【讨论】:

    猜你喜欢
    • 2014-02-23
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-07
    • 2011-07-07
    • 1970-01-01
    • 2015-08-11
    相关资源
    最近更新 更多