Я использую рельсы для защиты доступа к файлам, которые должны обслуживаться только некоторыми пользователями веб-приложения. Для этого у меня есть метод контроллера, который принимает информацию о файле, к которому они хотят получить доступ, проверяет их авторизацию, а затем, если они авторизованы, использует 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'
Я предполагаю, что проблема связана с моей маршрутизацией, но я не совсем понимаю, как периоды влияют на маршруты. Есть идеи?