2012-01-08 24 views
1

可能重複:
Rails: call another contoller action from a controllerRails如何在另一個控制器中調用操作並獲取該操作的控制器代碼以運行?

您好我是新來的軌道,在我的主頁視圖我想打電話給在其他控制器的動作。 我正在使用渲染'the/relevant/url'。

這是調用視圖,但不會觸及正確的控制器操作代碼,因此 未設置視圖預期的視圖模型。

我來自asp.net mvc世界,在這裏我們可以使用渲染動作,這將打擊操作的控制器代碼。

這可以在rails中完成嗎?

是否asp.net做mvc模式錯誤,如果你不能?

非常感謝

UPDATE

我的目的是從主頁的看法調用另一個控制器動作讓不相關的主控制器的細節,如側數據。當天報價或當日特價。

+0

這可能違背了MVC模式。你能粘貼更多的代碼,或者解釋你想要從主頁控制器做什麼? – lebreeze 2012-01-08 09:19:06

回答

1

您將不得不使用redirect_to來從一個控制器動作傳遞到另一個控制器動作。

2

這被認爲是不好的做法。當您在控制器中構建視圖時,大部分數據將處於有狀態。使用render和模板覆蓋可以將一個瘋狂的解決方案拼湊在一起,但基本上,你不應該這樣做。

取而代之的是,使用redirect_to other_controller_action_url(它會默認發送一個HTTP 302 FOUND),或者甚至更好,找出你的代碼重複的地方,並將它分解成一個助手或演示者。

編輯:如果您試圖在某個側欄中獲得某些內容,則不應該使用整個導軌堆棧來呈現響應的一小部分。相反,你最好使用助手來生成特定的數據,並使用partial來渲染你的側邊欄。

+0

您將如何獲取與您所在視圖或控制器主要部分無關的數據?這些數據屬於主視圖數據,因此不想添加到視圖模型中。這是網頁右側的邊數據。 – c00ke 2012-01-08 12:02:59

+0

使用部分或使用flash信息。 – locriani 2012-01-08 12:13:09

+0

感謝部分獲取數據的方式,我需要從數據庫或緩存中獲取? – c00ke 2012-01-08 12:25:16

1

「這是調用視圖,但不會觸及正確的控制器操作代碼,因此不會設置視圖預期的視圖模型。」

很混亂。

我只會使用一兩本書閱讀更多內容,比如使用Rails進行敏捷Web開發和O'Reilly Ruby書籍。

從瀏覽器頁面即視圖開始。所以用戶點擊一個鏈接,它調用一個控制器動作,做一些事情。它可以通過Controller.action調用其他控制器的操作來執行操作。它顯示的html將來自最初的控制器渲染語句,除非它重定向到執行渲染的另一個控制器。

當你來自ASP,PHP等rails意味着重新佈線你的理解,它通常需要一段時間。我來自冷聚變,不得不通過這個過程。

相關問題