提前谢谢你。
我正在尝试让我的Rails 5.1应用程序响应" application / javascript"请求。
本质上,我希望能够将带有src的标记指向我的Rails应用程序,以便我可以请求执行JS文件。
我在app / javascript / pack下有一个目前只有console.log( 'hello_world' )
的文件。我想做的就是在我想要的页面上执行。
我有一个控制器动作如下:
def hello_world_js
send_file(
"#{Rails.root}/app/public/packs/hello_world.js",
:filename => "hello_world.js",
:type => "application/javascript"
)
end
src请求导致此控制器操作。但是,我收到以下错误:
ActionController::MissingFile (Cannot read file /Users/mac/Workspace/rails_app_dir/app/public/packs/hello_world.js)
这对我有意义。
通常情况下,视图文件中会有一个javascript_pack_tag
,它会触发javascript src的编译和返回。但是,我没有通过这些动作,因此我没有准备好已编译的JS文件。
如何设置它,以便可以从<script/>
src请求触发?
投射到未来,我想编译后的文件将在其名称后面包含一串字符。 hello_world.js
实际上就像hello_world-8f87b73be32a9b3e4fb2.js
一样 - 我怎么能适应这个呢?
我想到的一个解决方案是使用端点呈现.js.erb文件,然后再次附加标记。我想避免这种情况,因为我向服务器发出了两个请求。
非常感谢任何输入。谢谢。
答案 0 :(得分:2)
我设法通过查看Webpacker源代码来弄明白。
我可以通过以下方式找到公共文件以及通过以下方式在dev中触发编译:
Webpacker.manifest.lookup!( 'hello_world.js' )
可以找到Webpacker :: Manifest here。
真的,我通过查找javascript_pack_tag
的定义找到了这个。
希望这对于徒步旅行者有用,如果它是一条线,因为我喜欢聊聊这个。