【发布时间】:2011-11-08 17:17:25
【问题描述】:
我正在使用 Rails 来保护对仅需要为 Web 应用程序的某些用户提供服务的文件的访问。为此,我有一个控制器方法,它接受有关他们想要访问的文件的信息,检查他们的授权,然后如果他们被授权,则使用 x-sendfile 将其发送给他们。这个概念很好用,除了一个障碍:如果他们请求一个带有 .在其中我的路由不知道如何处理它。在我的路线文件中,我有:
match 'atb_resources/:guid/:resource' => 'atb_resources#show', :as => :get_atb_resource, :via => :get
但是如果我在我的规范中尝试这个:
get 'show', :guid => 'some_guid', :resource => 'blah.txt'
规范失败并显示:
Failure/Error: get 'show', :guid => @atb.guid, :resource => 'blah.txt'
ActionController::RoutingError:
No route matches {:guid=>"ABCDEFG5", :resource=>"blah.txt", :controller=>"atb_resources", :action=>"show"}
但这很好:
get 'show', :guid => 'some_guid', :resource => 'blahDOTtxt'
我假设问题出在我的路线上,但我并不真正了解周期如何影响路线。有什么想法吗?
【问题讨论】:
标签: ruby-on-rails routing rspec