如何在 Rails 引擎中使用 [public] 文件夹?

How can use [public] folder in Rails Engine?

我有一个博客引擎并添加到 Rails 应用程序:

  1. public文件夹和文件js添加到引擎:

    \public\sliderengine\amazingslider.js

  2. 编辑引擎的文件 engine.rb
class Engine < ::Rails::Engine
    isolate_namespace Blorgh
    initializer "static assets" do |app|
    app.middleware.insert_before(::ActionDispatch::Static, ::ActionDispatch::Static, "#{root}/public")
    end
  end
  1. 编辑引擎的文件 .gemspec

s.files = Dir["{app,config,db,lib,public}/**/*", "MIT-LICENSE", "Rakefile", "README.md"]

  1. 在引擎的文件 index.html.erb 中使用文件 js:
   <script src="sliderengine/amazingslider.js"></script>

结果:当 运行 Rails App:

时发生错误
GET http://localhost:3000/blog/sliderengine/amazingslider.js 404 (Not Found)

如何在 Rails 引擎中使用 [public] 文件夹?

嗯。我是这样做的:

将js放在引擎的assets文件夹下(我放在引擎名下):

app/assets/javascripts/blorgh/amazingslider.js

然后在引擎中添加:

#blorg/app/assets/javascripts/blorgh.js
//= require_tree ./blorgh

然后在应用程序中

#application.js
//= require blorgh

您必须将引擎的 public 文件夹复制到 Rails App

的 public/blog 文件夹