Ruby on Rails: загрузка файлов с несколькими точками в имени файла (загружено с помощью Carrierwave) - PullRequest
3 голосов
/ 20 февраля 2012

Вид:

<%= link_to File.basename(attachment.attachment.url), "/uploads/#{attachment.id}/#{File.basename(attachment.attachment.url)}" %>

Контроллер:

# ...
  def download
    path = "#{Rails.root}/uploads/"+ params[:id] + "/"+ params[:basename] +"."+ params[:extension]

    send_file path, :x_sendfile=>true
  end
# ...

Маршрут:

match "/uploads/:id/:basename.:extension", :controller => "attachments", :action => "download", :conditions => { :method => :get }

Ошибка получения:

Routing Error

No route matches [GET] "/uploads/38/Screen_shot_2012-02-18_at_2.20.49_PM.png"

Ответы [ 2 ]

4 голосов
/ 20 февраля 2012
match "/uploads/:id/:filename.:extension", :controller => "attachments", :action => "download", :constraints => { :filename => /[^\/]+/ },  :conditions => { :method => :get }

Благодаря форкеру меня привели в этот блог: http://coding -journal.com / rails-3-routing-parameters-with-dots /

0 голосов
/ 20 февраля 2012
match "/uploads/:id/:filename", :controller => "attachments", :action => download, :requirements => { :filename => /.*/ }

через этот блог

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...