的術語在問題有點困惑。如果在控制器中,並且您想要在另一個控制器的另一個操作方法中執行代碼並呈現其模板,則應該redirect_to該操作。比方說,另一個控制器被稱爲ContractsController
redirect_to :controller => "contracts", :action => "show_home_page"
如果你只是想使用的視圖模板從另一個方法,從動作的響應,你只需要在渲染參數的前綴控制器的名稱。這不會調用該操作,它只會使用其模板。
例如,如果模板位於合同控制器的文件夾中。
render :action => "/contracts/show_home_page", :layout=> false
我認爲在這種情況下,你實際上是在談論一個部分,它看起來像
render :partial => "/contracts/show_home_page"
然而,我看到你在這裏抓的是,你真的想調用多個動作方法來呈現單個頁面。這不是它的工作原理。您將不得不設置模板將在單個操作中引用的對象。這是大多數Rails開發人員在模型中放置大量代碼的原因之一,因此設置不會在控制器中重複。
但還有另一種方式...其中的JavaScript魔術進來
在您的網頁,創建這樣一個功能:如果你調用在
<script type="text/javascript" language="javascript">
function load_categories() {
<%= remote_function(:url => {:controller => "categories", :action => "list"},
:update => "categories")%>
};
</script>
即使你的頁面已經打開,它會用來自引用操作的響應來替換id爲「categories」的div。
引用:「我對rails很新,我對框架還沒有100%的自信。」 - 我對rails並不陌生,但是當我認爲我理解了某些東西,那麼我錯了,一個更好的解決方案或新的rails版本;-) – halfbit 2015-08-10 18:35:06