Настройка маршрута для доступа к частному контенту S3 - PullRequest
2 голосов
/ 28 сентября 2011

Я следил https://github.com/thoughtbot/paperclip/wiki/Restricting-Access-to-Objects-Stored-on-Amazon-S3 а также Rails 3, paperclip + S3 - Howto Store для экземпляра и защиты доступа , чтобы попытаться заставить ссылки Paperclip с истекшим сроком действия работать. Я полагаю, что большая часть того, с чем я сталкиваюсь, является одной из разновидностей маршрутизации.

В моем кусочке-контроллере я поместил такой метод

def download
   redirect_to @asset.asset.expiring_url(1000)
end

А потом в мои маршруты я положил это:

 match "pieces/download"

Тогда, на мой взгляд, у меня есть:

 <%= link_to download_asset_path(piece)%>

Казалось бы, это далеко от работы, и я не уверен, что запуталось. Я знаю, что получаю ошибки маршрутизации для одного, но это также говорит мне, что мой download_asset_path не определен, что, вероятно, также связано с маршрутизацией ... Я чувствую, что все делаю неправильно.

Вырвал мои волосы. Спасибо!

1 Ответ

2 голосов
/ 28 сентября 2011

Попробуйте изменить файл маршрутов на:

match 'pieces/download' => 'pieces#download', :as => 'download_asset'

В вашем совпадении необходимо указать, на какое действие контроллера нужно перейти, а опция as позволит вам назвать маршрут download_asset_path.

Если ваш контроллер штук предназначен для ресурса Piece, он может быть чище, как:

resources :pieces do
  member do
    get :download
  end
end

Но тогда вы захотите изменить ссылку на:

link_to 'Link text', download_piece_path(piece)

Для дальнейшего чтения: http://guides.rubyonrails.org/routing.html

...