2010-09-07 44 views
2

比方說,我們有以下幾頁 夾/顯示/ 111 圖像/顯示/ 222 聲音/顯示/ 333 其中111222和333是標識爲不同的貢獻Ruby on Rails,如何讓控制器渲染不重定向的不同頁面?

我開發了一個新的控制器被稱爲「作秀「將檢測ID和重定向到正確的控制器 show/show/111將重定向到剪輯/顯示/ 111等

我想要的是呈現頁面剪輯/顯示/ 111沒有重定向,這意味着瀏覽器上的URL仍然會顯示「show/show/111」,但實際上會渲染「剪輯/顯示/ 111」

我該怎麼做?

感謝所有 Wa'el

+0

我認爲你最後得到了錯誤的方式...... << show/show/111「但實際上會渲染」show/clip/111 「>>應該是」「show/show/111」,但實際上是渲染「clip/show/111」>> – Chris 2010-09-07 11:03:26

+0

是的,謝謝Chris,它現在改變了。 – wael34218 2010-09-09 07:50:57

回答

0

這聽起來像你真正想做的是讓別名你的一些途徑,讓您可以訪問不同的URL結構相同的功能。如果是這樣的話,創建一個將其所有工作委託給另一個控制器的整個控制器將是一種代碼異味(功能羨慕)。

你可能想要做的是爲「show /」定義一些額外的路線,只需重新使用相同的剪輯控制器。這將通過簡單地執行以下操作來完成:

# routes.rb 
# ... 
# For Rails 2 
map.resources "show", :controller => "clip" 

# For Rails 3 
resources "show", :controller => "clip" 
+0

另外我知道你說過你不想重定向,但值得一提的是Rails 3路由器允許你直接從routes.rb文件重定向。查看http://guides.rubyonrails.org/routing.html#redirection瞭解更多信息。 – Chris 2010-09-07 11:02:25

+0

我不能使用這樣的資源,因爲路由不知道貢獻類型,如果它是剪輯,圖像..等等,在我的節目控制器中,我做了一些查詢,以瞭解傳遞的ID的類型並相應地呈現控制器/操作。 – wael34218 2010-09-09 07:49:50

相關問題