我有一個導軌應用,但我需要將舊路由從一個PHP應用傳遞到我的新導軌路由(因爲與他們綁定的舊谷歌廣告)。我看得很遠,我無法弄清楚如何解決我的問題。將舊ID轉換爲具有相同控制器名稱並使用友好ID的新路由
我有一個視頻控制器,我的新視頻使用「友好的ID」。現在,我有老路線,他們在那裏使用slu and和ids。我需要將這些舊路線重定向到我的新路線。我知道我需要檢查的是視頻是零,但我想弄清楚如何定義slu goes去哪裏。
我的問題:我試圖做簡單的重新路由的事情,但我的控制器試圖所在的ID,無法找到他們(因爲蛞蝓不再有效),它拋出一個錯誤。我有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')
例如,我有一個高科技的視頻,老塞,需要去新「技術的視頻」或者我有一個需要「88」的ID進入「酷視頻」
控制器
(bottom of controller)
private
def set_video
@video = Video.friendly.find(params[:id])
if @video.nil?
**method goes here**
end
end
我之前沒有使用過friendly_id,但認爲你可能只需要在路線下面添加一條類似於get'/ videos /:id'=>'controller#action''的路線,其中'控制器'可能是'視頻'和'行動'是無論你的控制器動作是什麼(可能是'show') – dinjas
我不喜歡玩「啞巴金髮」sterotype,但我不能完全按照你的建議,因爲我不能讓我的頭靠近它。根據我上面定義的路線,你會建議什麼類型的路線? – AGirlThatCodes
當rails尋找匹配的路線時,它會看到你擁有'/ videos/88','/ videos/1388'等的路線,並按照你的要求重新定向它們,但是因爲你沒有爲'/ videos/cool-video'和'/ videos/better-video'定義的路線,它不知道該怎麼做。因此,如果您將'/ videos /:id'路線添加到您擁有的'/ videos /:id'路線下面,Rails將會看到並匹配它,並且會認爲'cool-video'和'better-video'是用於':id'的。字段,並將它們作爲參數在你的控制器中可用[:id] – dinjas