在我们的应用程序中,我们有一个 gem,它为五个运行 Rails 应用程序的网站提供通用代码。在文件中的 gem 中lib/theme/controller_module.rb
是以下代码:
def application_javascripts(*items)
@application_javascripts ||= []
@application_javascripts += items
end
在文件中的 gem 中helpers/theme_helper.rb
是以下代码:
def application_js_include_tag
if @application_javascripts
javascript_include_tag( *@application_javascripts)
end
end
主题宝石位于每个应用程序的Gemfile
. 在控制器代码和帮助程序中,application_javascripts
执行以跟踪页面上使用了哪些特定于页面的 JavaScript,并将其application_js_include_tag
放置在视图的底部以仅使那几个文件可用。
@application_javascripts
不幸的是,一旦视图开始渲染,视图中的值似乎不会更新。在页面底部执行时,在帮助程序中添加@application_javascripts
的内容对视图不可用。application_js_include_tag
我是否需要一个单独的助手,比如application_javascripts
在那里定义的变量,并在其中使用两者application_js_include_tag
?还是其他解决方案?