Ruby on rails 如何从Rails中的控制器提供静态内容?
我希望通过Rails中的控制器操作提供静态内容,就像Rails从公共目录提供静态内容一样。我不想仅仅更改公共目录的路径,或者向Rails添加另一个路径来从那里提供文件服务。我希望显式处理对控制器中特定文件的请求,以根据请求的文件验证请求 我天真地尝试使用Ruby on rails 如何从Rails中的控制器提供静态内容?,ruby-on-rails,ruby,static-content,Ruby On Rails,Ruby,Static Content,我希望通过Rails中的控制器操作提供静态内容,就像Rails从公共目录提供静态内容一样。我不想仅仅更改公共目录的路径,或者向Rails添加另一个路径来从那里提供文件服务。我希望显式处理对控制器中特定文件的请求,以根据请求的文件验证请求 我天真地尝试使用send_file,但是我再也不能使用范围请求了 class MyController < ApplicationController def dummyAction filePath = 'foo/bar/baz.mp3'
send_file
,但是我再也不能使用范围请求了
class MyController < ApplicationController
def dummyAction
filePath = 'foo/bar/baz.mp3'
send_file(filePath, {:filename => "baz.mp3", :type => "audio/mpeg"})
end
end
class MyController“baz.mp3”,:type=>“audio/mpeg”})
结束
结束
我更喜欢使用Rails,而不是自己编写所有代码。Rails中有什么东西可以做到这一点吗?可能是Gem?最好将文件存储在资产目录中,或创建静态资源控制器或使用公用文件夹。 见: 如果你有权限 这也可能引起人们的兴趣: 但如果你必须走这条(错误的)路,那么: 将路径添加到config\routes.rb
resources :MyController do
collection do
get 'dummyAction'
end
end
将mime类型添加到config/initializers/mime_types.rb:
Mime::Type.register_alias "audio/mp3", :mp3
将控制器编辑为:
def dummyAction
respond_to do |format|
format.mp3
end
end
将文件另存为MyController/dummyAction.mp3.erb这是否回答了“通过发送文件接受字节范围请求”帮助?=>我希望有一个更优雅的解决方案。Rails似乎有提供静态内容的功能。范围请求在公共目录外提供MP3文件时起作用。