ERB中子模板视图中的变量范围

时间:2016-02-03 17:01:51

标签: ruby-on-rails ruby erb

我试图在布局中声明可以在视图中覆盖的默认值。

这是我的布局:

<%# Variables defaults -%>
<%
    @cssFiles = []
    @jsFiles = []
-%>
<%# Variables overrides -%>
<%= yield :layoutVariables -%>

我的观点:

<% content_for :layoutVariables do -%>
    <%
        @cssFiles.push 'bootstrap'
        @jsFiles.push 'bootstrap'
    -%>
<% end -%>

我知道这可以通过在控制器中声明变量来完成,但我想知道范围是否可以从layout-&gt;视图扩展。

1 个答案:

答案 0 :(得分:0)

正如我所见,您正在尝试在视图中收集一些资源文件。这不是一个很好的选择。 我建议制作新模块

  

配置/初始化/ frontend.rb:

Module Frontend
    @@fe = Array.new()

def self.getfe
   @@fe
end

def self.add_css(css)
            @@fe << css
        end
    end

现在你可以简单地将你的css文件添加到这个数组的任何地方,只需调用:

Frontend::add_css "yourfile"

让你的阵列回来简单地调用

Frontend::getfe

这种带有类方法的机制也适用于视图 祝你好运!