在views目录之外包含ActionController :: Base

时间:2014-10-28 18:02:07

标签: ruby-on-rails angularjs

我可以拥有一个仅包含此内容的视图文件:

根/应用/视图/布局/ application.html.erb

<%= link_to root_url %>

当然有效。这是因为

ActionController

以某种方式包含在视图文件中。

这是如何运作的?在每个视图中我们都不会写'include ActionController',所以它是如何神奇地包含在内的?

假设我正在使用角度模板:

根/应用/资产/模板/ angularview.html.erb

<%= link_to root_url %>

除了link_to未包含在此视图中之外,一切都完美无缺:

undefined method `link_to' for #<#<Class:0x000000020417b0>:0x0000000468f2c8>
  1. 如何将ActionController包含在 root / app / assets / templates / angularview.html.erb 中存储的文件中?
  2. 我应该在项目中编辑什么来自动生成 root / app / assets / templates 中的所有文件包括ActionController?这可能吗?我希望它们的行为类似于“普通”视图,并且神奇地包含普通视图所包含的所有内容。

1 个答案:

答案 0 :(得分:1)

由于您在资源目录中有了angularview模板,因此无效(正如您在问题中提到的那样: root / app / assets / templates / angularview.html.erb )。您需要在应用程序的 app / views / layouts / 目录中创建它。

有关详细信息,请参阅以下答案:

  1. https://stackoverflow.com/a/6951986/645886
  2. https://stackoverflow.com/a/19849989/645886
  3. 更新:但是,如果您必须这样做,那么您可以创建初始化程序并输入以下代码:

    Rails.application.assets.context_class.class_eval do
      include ActionView::Helpers
      include MyAppHelper
      include Rails.application.routes.url_helpers
    end
    

    来源:https://stackoverflow.com/a/14284279/645886