簡體   English   中英

rails路由和params與'。' 在他們中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM