我有一个 TasksController 和一个 SubtasksController。在来自 SubtasksController 的 Action 的给定时刻,我想:

# app/controllers/tasks_controllers.rb
render 'tasks/index' # Or: render template: 'tasks/index'

但是,当从 View 中调用该操作时,rails 似乎正在尝试呈现错误的部分:
ActionView::Template::Error (Missing partial subtasks/tasks, private_area/tasks, application/tasks with {:locale=>[:ca, :es], :formats=>[:js, :html], :handlers=>[:erb, :builder, :slim, :jbuilder, :coffee, :haml]}. Searched in:
  * "/Users/****/app/views"

我真的不明白这里发生了什么,有什么想法吗?

最佳答案

当您呈现另一个 Controller 操作时,显示的页面将在调用 Controller View 中查找其内部的任何部分。

您可以通过在页面内显式声明部分的路径来解决这个问题,这样即使从另一个 Controller 调用它也将始终位于正确的位置。

# tasks/index page
<%= render 'tasks/some_partial' %>

现在无论哪个 Controller 渲染这个页面,它总是会在 tasks 中查找它的部分。

关于ruby-on-rails - Rails : render template looking for the wrong partial,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17082615/

10-13 05:39