【发布时间】:2013-07-21 18:59:01
【问题描述】:
我有两个控制器,一个继承自另一个:
class FirstController < ApplicationController
...
def show
...
end
end
class SecondController < FirstController
...
def show
...
end
end
第一个控制器的视图文件夹包含以下文件:
- views/first/show.html.erb
- views/first/show.js.erb
第二个控制器的views文件夹只包含HTML文件:
- views/second/show.html.erb
在控制器的 show 方法中未调用渲染或重定向。
当我将SecondController#show 称为JS 时,我希望views/first/show.js.erb 会被渲染,但这并没有发生。我得到回应:Rendered second/show.html.erb。
如果我删除文件views/second/show.html.erb,那么就没有问题,我会回复Rendered first/show.js.erb。为什么会这样?
如何以非显式方式调用父控制器的 JS 视图,例如渲染 first/show?
【问题讨论】:
-
您能显示您的
show方法的代码吗?我怀疑SecondController中的show方法没有调用FirstController中覆盖的show方法。 -
我认为这是因为 Rails 中没有以任何方式继承视图,我认为这是正确的行为。
标签: ruby-on-rails ruby ruby-on-rails-3 inheritance