Ruby on rails 如何添加我的应用程序';s的文档是否可以通过应用程序访问,但不能通过公共目录访问?(因此需要身份验证)
更新: 我得到了这个错误:Ruby on rails 如何添加我的应用程序';s的文档是否可以通过应用程序访问,但不能通过公共目录访问?(因此需要身份验证),ruby-on-rails,Ruby On Rails,更新: 我得到了这个错误: (No route matches "/docs/index.html"... ) 访问时 admin.example.com/docs/index.html 该文件已存在 在my routes.rb文件中: map.with_options(:conditions => {:subdomain => 'admin']}) do |subdom| subdom.root :controller => 'admin/subscription
(No route matches "/docs/index.html"... )
访问时
admin.example.com/docs/index.html
该文件已存在
在my routes.rb文件中:
map.with_options(:conditions => {:subdomain => 'admin']}) do |subdom|
subdom.root :controller => 'admin/subscriptions', :action => 'index'
subdom.with_options(:namespace => 'admin/', :name_prefix => 'admin_', :path_prefix => nil) do |admin|
admin.connect "/docs/:id", :controller => :docs, :action => :get_file
end
end
文档控制器位于app/controllers/admin/
该控制器中的唯一方法
def get_file
path = request.request_uri
send_file(path)
end
结束更新
所以,我有一个子域admin.example.com,我想把YARD生成的文档放在后面
我试着把它们放在公用文件夹中,修改routes.rb文件,但是这些文档总是可以访问的
如何使其仅在登录admin.example.com后可用
(文档中的所有href都是相对的,因此,我也不确定如何使用控制器)不要将它们放在公用文件夹中 将它们完全放在其他地方,并仅将它们流回到经过身份验证的用户
实现这一点的一种方法是。这是一本很好的入门书,介绍如何使用nginx和send_file实现对公众文件的保护。您的方法应该是这样的:
def get_file
path = Dir[Rails.root.join("docs", params[:file_or_folder])]
if path.length > 0
# check if root directory
path_str = path[0]
if path_str =~ /\/docs\/?\z/
path_str += "/index.html"
end
render :file => path_str
else
render :text => "File Not Found"
end
end
您的rails路线应该如下所示:
map.connect "/docs/:file_or_folder", :controller => :docs, :action => :get_file, :file_or_folder => /.*/
map.resources :docs, :only => :get_file
怎样?我是否将它们流式传输给这些用户?@TheLindyHop可能使用
send\u file
(更新了带有链接的答案),尽管可能还有其他方法。但是。。假设我有href=“/myObject.html”,如何发送该文件?当我的路由告诉doc/使用get_file操作时,params散列会丢失该信息=\