Rails Assets Pipeline从控制器和方法加载JavaScript

Rails Assets Pipeline load JavaScript from controllers and methods

本文关键字:方法 加载 JavaScript 控制器 Assets Pipeline Rails      更新时间:2023-09-26

我想在代码中保持DRY,这样当我的javascript文件与控制器或/和方法匹配并且.js存在时,我想自动加载它。我将此添加到我的布局中

= javascript_include_tag params[:controller] if ::Rails.application.assets.find_asset("#{params[:controller]}.js")
= javascript_include_tag "#{params[:controller]}/#{params[:action]}" if ::Rails.application.assets.find_asset("#{params[:controller]}/#{params[:action]}.js")

所以现在当我添加javascripts/my_controller/my_method.js时,它会自动加载它,这很好。

遗憾的是,我必须添加另一行来预编译资产,否则会抛出一个错误(它说我必须预编译.js文件),而我没有找到任何解决方法。

Rails.application.config.assets.precompile += %w( orders/checkout.js )

有人有解决方案可以避免在这种配置中手动添加元素吗?

注意:我已经尝试使用require_tree .,它只是加载每个页面上的所有文件,在我的情况下不起作用

您可以使用通配符来允许预编译视图中包含的所有JS文件:

config.assets.precompile << '*.js'