使用继承层次结构时,在父控制器中呈现正确的操作 - Rails

时间:2011-05-17 17:21:19

标签: ruby-on-rails inheritance controller sti

我正在使用具有此单表继承层次结构的代码库:

BlogEntryWizardController< BlogEntriesController< CommonEntryController< ApplicationController中

BlogEntryWizardController(BEWC)使用与BlogEntriesController(BEC)使用的模型相同的模型。 BEWC和BEC之间唯一真正的区别是视图(一个是另一个的教程向导)。在向导中提交表单后,它会不断地将用户带到BEC(父母)的“显示”操作。这发生在CommonEntryController(CEC)中:

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

这会调用BEC的show方法,但我需要它来调用BEWC中的overriden show方法。是否有一种方法可以在CE中区分“显示”动作以适当调用?

谢谢你的两分钱。

1 个答案:

答案 0 :(得分:0)

在BEC内的“show”动作内,将重定向发送到show controller:

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

这样做是不够的,因为实例变量在控制器之间不是持久的。因此,您可以在会话中保存BEC实例变量,并在“show”操作中在BEWC控制器中检索它。