Używam szyn, aby chronić dostęp do plików, które muszą być dostarczane tylko niektórym użytkownikom aplikacji internetowej. Aby to zrobić, używam metody kontrolera, która akceptuje informacje o pliku, do którego chce uzyskać dostęp, sprawdza ich autoryzację, a następnie, jeśli są autoryzowane, używa x-sendfile, aby wysłać je do nich. Ta koncepcja działa dobrze, z wyjątkiem jednego szkopu: jeśli zażąda zasobu o wartości. w tym moim routingu nie wie, jak sobie z tym poradzić. W moim pliku tras mam:routing szyn i params z "." w nich
match 'atb_resources/:guid/:resource' => 'atb_resources#show', :as => :get_atb_resource, :via => :get
a ale gdy próbuję to w moim specyfikacji:
get 'show', :guid => 'some_guid', :resource => 'blah.txt'
spec nie powiedzie się:
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"}
ale to jest w porządku:
get 'show', :guid => 'some_guid', :resource => 'blahDOTtxt'
Zakładam, że problem dotyczy mój routing, ale tak naprawdę nie rozumiem, jak okresy wpływają na trasy. Jakieś pomysły?
Dokładnie to, czego potrzebowałem, dzięki! – Matthew