Ruby on rails 在rails中加载特定于页面的javascript

Ruby on rails 在rails中加载特定于页面的javascript,ruby-on-rails,angularjs,Ruby On Rails,Angularjs,我正在开发Rails/Angular应用程序。app/themes下有特定于主题的文件夹,这些文件夹被添加到资产管道中 config/initializers/assets.rb Dir[Rails.root.join("app", "themes", "*")].each do |path| %w{stylesheets javascripts images fonts}.each do |type| theme_assets = File.join(path, type)

我正在开发Rails/Angular应用程序。
app/themes
下有特定于主题的文件夹,这些文件夹被添加到资产管道中

config/initializers/assets.rb

Dir[Rails.root.join("app", "themes", "*")].each do |path|
  %w{stylesheets javascripts images fonts}.each do |type|
    theme_assets = File.join(path, type)
    Rails.application.config.assets.paths << theme_assets
  end
  theme_folder = File.basename(path)
  Dir["#{path}/images/*"].each do |img|
    Rails.application.config.assets.precompile += [ File.basename(img) ]
  end
  Rails.application.config.assets.precompile += [ "#{theme_folder}/index.css",
                                                  "#{theme_folder}/index.js" ]
end
app/assets/javascripts

app/themes/#{theme\u folder}
中特定于页面的javascript在angular之前加载


我想在这个特定于页面的javascript中运行一些角度代码。所以我需要在angular完成后加载它。

加载代码时不必运行代码(取决于您编写代码的方式)。您可以在事件中触发它,例如在DocumentReady上

我不知道这是否适用于您的用例,但也许您可以这样封装它:

var MyCode = (function () {
  function myFunc(){
  }

  function myFunc2(){
  }

  return {
    myFunc: myFunc,
    myFunc2: myFunc2
  }
}());

$(document).on('ready', function () {
  MyCode.myFunc();
  MyCode.myFunc2();
});

您是否尝试将
Rails.application.config.assets.precompile+=“angular\u vendor.js”
添加到
config/initializers/assets.rb
中,或者另一种方法可以是:
Rails.application.config.assets.precompile+=%w(angular\u vendor.js)
它已经在
config/initializers/assets.rb
中,并且是数组形式。
var MyCode = (function () {
  function myFunc(){
  }

  function myFunc2(){
  }

  return {
    myFunc: myFunc,
    myFunc2: myFunc2
  }
}());

$(document).on('ready', function () {
  MyCode.myFunc();
  MyCode.myFunc2();
});