2015-12-10 35 views
1

我有一個導軌應用,但我需要將舊路由從一個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 
+0

我之前沒有使用過friendly_id,但認爲你可能只需要在路線下面添加一條類似於get'/ videos /:id'=>'controller#action''的路線,其中'控制器'可能是'視頻'和'行動'是無論你的控制器動作是什麼(可能是'show') – dinjas

+0

我不喜歡玩「啞巴金髮」sterotype,但我不能完全按照你的建議,因爲我不能讓我的頭靠近它。根據我上面定義的路線,你會建議什麼類型的路線? – AGirlThatCodes

+0

當rails尋找匹配的路線時,它會看到你擁有'/ videos/88','/ videos/1388'等的路線,並按照你的要求重新定向它們,但是因爲你沒有爲'/ videos/cool-video'和'/ videos/better-video'定義的路線,它不知道該怎麼做。因此,如果您將'/ videos /:id'路線添加到您擁有的'/ videos /:id'路線下面,Rails將會看到並匹配它,並且會認爲'cool-video'和'better-video'是用於':id'的。字段,並將它們作爲參數在你的控制器中可用[:id] – dinjas

回答

0

正如我們在聊天發現,確保沒有與路線'videos'

(包括resources :videos

發生在routes文件上面的重定向含有/videos/:id將重定向踢之前得到匹配的路由。

祝你好運!

+1

謝謝!你就像我的第二個救世主。 – AGirlThatCodes

+1

是我的榮幸! – dinjas

相關問題