首页 > 解决方案 > Rails 5 - 为模型的每个实例创建虚荣路线

问题描述

我知道必须有一种更清洁的方法来做到这一点,但我有一段时间没有编写代码并且正在画一个空白。

我有一个名为 Link 的模型,它有一个 Title、Slug 和 Destination。Destination 是重定向的位置(mydomain.com/instagram 将重定向到我的 instagram 帐户)。Slug是为friendly_id定制slug。这是我的 routes.rb 中的代码,它可以工作,但感觉很糟糕。

Link.all.each do |link|
  get "/#{link.slug}", to: 'links#show', :id -> link.id
end

有没有更好的方法来完成这项任务?

标签: routingruby-on-rails-5url-redirectionvanity-url

解决方案


您可以使用单个操作和路由来匹配您的所有链接。

在 routes.rb 的底部

get '*id', :to => 'links#show'

在 links_controller.rb 中

  def show
    @link = Link.find_by_slug(params[:id])
  end

推荐阅读