Rails 5 - создает маршрут тщеславия для каждого экземпляра модели
Я знаю, что должен быть более чистый способ сделать это, но я давно не писал код и рисую пробел.
У меня есть модель, которая называется Link, которая имеет название, слизняк и пункт назначения. Пункт назначения - это место для перенаправления (mydomain.com/instagram будет перенаправлять на мой аккаунт в Instagram). Slug - это настройка слагаемого для friendly_id. Это код в моем rout.rb, и он работает, но чувствует себя брутто.
Link.all.each do |link|
get "/#{link.slug}", to: 'links#show', :id -> link.id
end
Есть ли лучший способ выполнить эту задачу?
1 ответ
Решение
Вы можете использовать одно действие и маршрут, чтобы соответствовать всем вашим ссылкам.
Внизу маршрутов.rb
get '*id', :to => 'links#show'
в links_controller.rb
def show
@link = Link.find_by_slug(params[:id])
end