Jak zmienić :id w url na coś innego


#1

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?


#2

Hej,

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


#3

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


#5

#6

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ć.


#7

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

?


#8

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.