Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何从Rails中的控制器提供静态内容?_Ruby On Rails_Ruby_Static Content - Fatal编程技术网

Ruby on 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'

我希望通过Rails中的控制器操作提供静态内容,就像Rails从公共目录提供静态内容一样。我不想仅仅更改公共目录的路径,或者向Rails添加另一个路径来从那里提供文件服务。我希望显式处理对控制器中特定文件的请求,以根据请求的文件验证请求

我天真地尝试使用
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文件时起作用。