Jak zmienić :id w url na coś innego

Witam jestem nowy w railsach i szukam rozwiązania jak zmienić taki domyślny url

http://0.0.0.0:3000/files/5

na coś takiego albo coś podobnego

http://0.0.0.0:3000/files/filename+id+sometext

używam Active Storage do uploadowania plików. Znalazłem metode to_param ale w 5.2 nie działa. Jakieś wskazówki?

Hej,

wydaje mi się, że szukasz https://github.com/norman/friendly_id

1 Like

niestety próbowałem już tego ale nie działa z active storage

A napisz pls w jaki sposób nie działa? Jakiś błąd wyskakuje może gdzieś z komunikatem?

Wklej też to co masz wpisałeś do routes.rb, żeby uzyskać tą ścieżkę. Rozpykamy problem, tylko więcej danych mi potrzeba, żeby nie strzelać, bo tam dużo rzeczy może nie banglać.

Dzieki za podpowiedzi na razie zostawiam ten problem na krótką chwilę ale napisze dokładnie co i jak robiłem, czyli:

  1. dodanie gemu, install
  2. rails g migration add_slug_to_active_storage_blobs slug:uniq
  3. rails generate friendly_id, rails db:migrate, tutaj wszystko ok dodało slug do tabeli
  4. extend FriendlyId

 friendly_id :name, use: :slugged 

dodane do modelu
5. dodałem friendy do controler

@test = ActiveStorage::Attachment.friendly.find(params[:id])

i to generuje

undefined method `friendly’ for #Class:0x000055bda52aeeb0 Did you mean? friendly_id

?

Ok napiszę jak udało mi się to zrobić może komuś się przyda
w routes

resources :files, param: :filename

w controller/show

@blob = ActiveStorage::Blob.find_by(filename: params[:filename])

po tym trzeba jeszcze dodać funkcje rename żeby w nazwie nie było kropki nad czym teraz walczę plus jakiś random kilko znakowy.