2011-09-01 13 views
6

私は、ウェブアプリケーションの一部のユーザだけに提供される必要があるファイルへのアクセスを保護するために、レールを使用しています。これを行うには、アクセスするファイルに関する情報を受け取り、許可を確認し、承認された場合にx-sendfileを使用してそれらに送信するコントローラメソッドがあります。このコンセプトは、1つの障害を除いて正常に動作します。それで私のルーティングはそれを処理することを知らない。私のルートで私が持っているファイル:railsルーティングと '。'その中に

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のために

答えて

8

3、あなたのルートにこれを追加することができます。Railsの2(私の知る限り)ため

:constraints => { :resource => /.*/ } 

を:

:requirements => { :resource => /.*/ } 

Railsはの一つせずに書式指定子として.txtを解釈しようとしますそれら。

+0

まさに私が必要なもの、感謝! – Matthew

関連する問題