Mat*_*hew 6 routing rspec ruby-on-rails
我正在使用rails来保护对仅需要为Web应用程序的某些用户提供服务的文件的访问权限.为此,我有一个控制器方法,它接受有关他们想要访问的文件的信息,检查他们的授权,然后如果他们被授权使用x-sendfile将它发送给他们.除了一个障碍之外,这个概念工作得很好:如果他们请求一个资源.在其中我的路由不知道处理它.在我的路线文件中我有:
match 'atb_resources/:guid/:resource' => 'atb_resources#show', :as => :get_atb_resource, :via => :get
Run Code Online (Sandbox Code Playgroud)
然后如果我在我的规范中尝试这个:
get 'show', :guid => 'some_guid', :resource => 'blah.txt'
Run Code Online (Sandbox Code Playgroud)
规范失败了:
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"}
Run Code Online (Sandbox Code Playgroud)
但这没关系:
get 'show', :guid => 'some_guid', :resource => 'blahDOTtxt'
Run Code Online (Sandbox Code Playgroud)
我假设问题出在我的路由上,但我真的不明白周期如何影响路由.有任何想法吗?
对于Rails 3,您可以将其添加到您的路线:
:constraints => { :resource => /.*/ }
Run Code Online (Sandbox Code Playgroud)
for Rails 2(AFAIK):
:requirements => { :resource => /.*/ }
Run Code Online (Sandbox Code Playgroud)
Rails会尝试将其解释.txt为格式说明符,而不是其中之一.
| 归档时间: |
|
| 查看次数: |
585 次 |
| 最近记录: |