为什么我的控制器呈现错误的视图?

时间:2013-07-21 18:59:01

标签: ruby-on-rails ruby ruby-on-rails-3 inheritance

我有两个控制器,一个继承自另一个:

class FirstController < ApplicationController
  ...
  def show
   ...
  end
end

class SecondController < FirstController
  ...
  def show
   ...
  end
end

第一个控制器的views文件夹包含以下文件:

  • 视图/第一/ show.html.erb
  • 视图/第一/ show.js.erb

第二个控制器的views文件夹仅包含HTML文件:

  • 视图/第二/ 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

1 个答案:

答案 0 :(得分:0)

这很奇怪。这只是一个黑暗中的镜头,但如果在你的第二个控制器中你明确地告诉它为JS呈现哪个文件会发生什么呢?

class SecondController < FirstController
  def show
    respond_to do |format|
      format.js { render "first/show.js" }
      format.html
    end
  end
end