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
Другие вопросы по тегам