Перечисление / ссылка на содержимое каталога в Rails

#ruby-on-rails #file

#ruby-on-rails #файл

Вопрос:

У меня есть набор статических PDF-файлов. Я хочу перечислить их на странице rails со ссылками на них.

Что мне нужно прямо сейчас, так это как обрезать /public в начале пути, чтобы ссылка действительно работала.

Текущий код:

 <h1>Listing letters</h1>
<table>
<ul>
<% @files = Dir.glob("public/files/*.pdf") %>
<% for file in @files %>
<% new_file = file.to_s %>
<% new_file = new_file.chomp("public/") %>
<li><%= link_to 'Letter', new_file %></li>
<% end %>
</ul>
</table>
  

Однако ссылки по-прежнему поступают как

 http://localhost:3000/public/files/document.pdf
  

когда для работы они должны быть

 http://localhost:3000/files/document.pdf
  

Ответ №1:

 <% Dir["public/files/*.pdf"].each do |file| %>
  <li><%= link_to 'Letter', file[//.*/] %></li>
<% end %>
  

Комментарии:

1. Намного проще, чем то, что я пытался. Спасибо. Вы только что сэкономили мне еще час 🙂

Ответ №2:

Метод chomp используется для удаления чего-либо в конце строки 😉 Вместо этого используйте gsub.

 new_file.gsub!('public', '')
  

или

 new_file = new_file.gsub('public', '')
  

Комментарии:

1. Становится все ближе! Однако выполнение <% new_file = new_file. удаление «public/» %> выдает мне строку с удаленной любой из этих букв в пути (т.Е. fes / docment.pf)

2. Хм, верно, извините за это, попробуйте gsub. Добавлен пример.