0

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

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#showasJS时,我希望views/first/show.js.erb被渲染,但这并没有发生。我得到回应:Rendered second/show.html.erb

如果我删除文件views/second/show.html.erb,那么没有问题,我会得到回应Rendered first/show.js.erb。为什么会这样?

我该怎么做才能以非显式方式调用父控制器的 JS 视图,例如渲染first/show

4

1 回答 1

0

这很奇怪。这只是在黑暗中拍摄,但是如果在第二个控制器中明确告诉它要为 JS 渲染哪个文件,会发生什么?

class SecondController < FirstController
  def show
    respond_to do |format|
      format.js { render "first/show.js" }
      format.html
    end
  end
end
于 2013-07-21T19:48:55.007 回答