2011-05-17 77 views
1

我與具有此單表繼承層次結構中的代碼基礎工作:渲染父控制器內正確的動作 - Rails的

BlogEntryWizardController < BlogEntriesController < CommonEntryController <的ApplicationController

BlogEntryWizardController(BEWC)用途BlogEntriesController(BEC)使用的相同模型。 BEWC和BEC唯一真正的區別是視圖(一個只是另一個的教程嚮導)。在嚮導中提交表單時,它一直將用戶帶到BEC(父級)的「顯示」操作。這發生CommonEntryController(CEC)內:

format.html { 
    render(:action => 'show') 
} 

這將調用BEC的節目的方法,但我需要它的BEWC內調用重寫顯示方法。 CE中有哪些區別「顯示」行動的方法可以適當調用?

感謝您的兩分錢。

+0

表單是否提交給BEWC或BEC中的操作? – 2011-05-17 17:26:51

+0

除非我錯了,否則STI不會要求控制器繼承。 – 2011-05-17 17:27:00

+0

我想這不是必要的,但是這個問題中的信息對於任何人來說都太模糊了。 BEWC和BEC使用相同的型號?它是否也是CEC使用的相同型號?這種形式發佈到什麼控制器/動作?他爲什麼要在他的問題中發佈CEC行動,如果他試圖進行BEC/BEWC行動?背景非常不清楚。 – 2011-05-17 17:34:25

回答

0

內內BEC「秀」的行動,發送重定向到顯示控制器:

redirect_to :controller => "BEWC", :action => "show" 

正是這樣做是不夠的實例變量不是控制器之間持久的。因此,您可以在會話中保存BEC實例變量,並在「顯示」操作中將其檢索到BEWC控制器中。