将旧 ID 路由到具有相同控制器名称并使用友好 ID 的新路由

Route old ids to new routes with the same controller name and using friendly id

我有一个 rails 应用程序,但我需要将旧路线从 php 应用程序路由到我的新 rails 路线(因为旧的 google 广告绑定到他们)。我看得很远,但我不知道如何解决我的问题。

我有一个视频控制器,我的新视频使用 "friendly id"。现在,我有旧路线,它们同时使用 slug 和 id。我需要将这些旧路线重定向到我的新路线。我知道我需要检查视频是否为零,但我正在尝试弄清楚如何定义 slug 去了哪里。

我的问题:我正在尝试执行简单的重新路由操作,但我的控制器正在尝试定位 ID 但无法找到它们(因为 slug 不再有效)并抛出错误。我有一个包含 6 个视频的列表,我需要将它们重新路由到我的新路由。

有什么关于我遗漏的建议吗?

路线

get '/videos/toys' => redirect('/videos')
get '/videos/88' => redirect('/videos/cool-video')
get '/videos/1388' => redirect('/videos/better-video')
get '/videos/tech-video' => redirect('/videos/technologies-video')

例如,我有一个技术视频,旧的 slug,需要转到新的 "technologies video" 或者我的 ID 为“88”需要转到 "cool-video"

控制器

(bottom of controller)
private

def set_video
  @video = Video.friendly.find(params[:id])
  if @video.nil?
    **method goes here**

  end
end

正如我们在聊天中发现的那样,确保没有包含 'videos'

的路由

(包括resources :videos

出现在重定向上方的路由文件中,因为包含 /videos/:id 的路由将在重定向开始之前匹配。

祝你好运!!