为什么render在controller和view中都被调用是正常的?

Why is it normal for render to be called in both the controller and in the view?

Rails 指南 Layouts and Rendering in Rails 提供了在控制器和视图中使用渲染器的示例。

Rendering by default ... mentions that rendering is called by default. The section Using render 部分给出了在控制器中调用 render 的示例:

def update
  @book = Book.find(params[:id])
  if @book.update(book_params)
    redirect_to(@book)
  else
    render "edit"
  end
end

Using Partials 部分给出了在视图中使用渲染的示例,例如使用局部渲染。

<%= render "menu" %>

无论是在控制器中使用渲染的情况,还是在视图中使用渲染的情况,都让我觉得不合逻辑。但让我感到困惑的是,我认为 Rails 的主要概念之一是模型视图控制器分离,这意味着为模型、视图和控制器赋予单独的职责。

为什么render在controller和view中都被调用正常?

我想说的是,如果使用得当,在视图中使用 render 时,它应该主要作为一个 organization/structural 工具,以使视图的代码更易于理解和阅读。

在控制器中使用时,它定义视图的入口点,并且是控制器中的操作与视图之间的主要关联。

差别很小。