2011-05-17 67 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控制器中。