一个控制器使用另一个控制器的视图进行渲染

Pau*_*aul 37 controller ruby-on-rails render view

我有QuestionController我现在有了AnotherQuestionController,其中的动作应该使用app/views/question /中的模板和部分渲染吗?这可能吗?看起来应该是这样.

我试过了

render :template => "question/answer"
Run Code Online (Sandbox Code Playgroud)

但answer.html.erb包含部分内容,我得到的错误就像

"在视图路径中缺少模板another_question/_my_partial.erb"

那么有没有办法告诉Rails"将AnotherQuestionController视为其QuestionController,并在app/views/question中查找视图和部分"?或者我是否必须创建app/views/another_question - 这将导致重复(这不能是Rails方式).

谢谢

Ben*_*hes 56

模板渲染实际上应该有效

 render :template => "question/answer"
Run Code Online (Sandbox Code Playgroud)

你遇到的问题是看到错误的地方.修复很简单,只需在任何共享模板中使您的部分绝对.例如,question/answer.html.erb应该有

<%= render :partial => 'question/some_partial' %>
Run Code Online (Sandbox Code Playgroud)

而不是通常的

<%= render :partial => 'some_partial' %> 
Run Code Online (Sandbox Code Playgroud)


kle*_*lew 13

您可以通过以下方式实现:

render 'question/answer'
Run Code Online (Sandbox Code Playgroud)