routing - 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
有没有更好的方法来完成这项任务?
解决方案
您可以使用单个操作和路由来匹配您的所有链接。
在 routes.rb 的底部
get '*id', :to => 'links#show'
在 links_controller.rb 中
def show
@link = Link.find_by_slug(params[:id])
end