轨道 - 视图或控制器中的查询模型



User有很多Folder。要实现Folderindex动作,我可以在控制器中查询特定用户的文件夹:

class FoldersController < ApplicationController
  def index
    @folders = current_user.folders
  end
end
#app/views/folders/index.html.haml
- @folders.each
...

但我也可以跳过控制器:

#app/views/folders/index.html.haml
- current_user.folders.each
...

当然,前者要优雅得多。但它们有本质的不同吗?我的意思是,它们有时是否具有不同的性能或输出不同的结果?

这可能需要相同的时间,但您的视图中不应有逻辑。

您应该在控制器中执行此操作,如您在两个示例中的第一个示例中所述。文件夹视图显示文件夹,它不必知道它是当前用户的文件夹。

这样,您可以执行管理操作,在其中检索所有文件夹并将其传递给变量"文件夹"中的同一视图。视图不关心它只表示您传递给它的任何文件夹列表。

不会有真正的性能差异。这只是样式和代码分离的问题。

最新更新