[英]rails routing and params with a '.' in them
我正在使用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'
我假設問題出在我的路由上,但我真的不明白周期如何影響路由。 有任何想法嗎?
對於Rails 3,您可以將其添加到您的路線:
:constraints => { :resource => /.*/ }
for Rails 2(AFAIK):
:requirements => { :resource => /.*/ }
Rails會嘗試將.txt
解釋為格式說明符,而不是其中之一。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.