Ruby on rails Rails独立控制器,适用于多种型号的页面?什么是最好的?

Ruby on rails Rails独立控制器,适用于多种型号的页面?什么是最好的?,ruby-on-rails,controller,Ruby On Rails,Controller,我有一个“dashboard”类型的页面,显示来自许多不同模型(一个父模型和许多关联的子模型)的记录,并使用我当前保存在父控制器中的逻辑。我是rails新手,不知道是否最好创建一个单独的仪表板控制器,或者只保留父控制器以添加/编辑/索引/销毁父记录 这种类型的页面是否有最佳实践 我使用的是Rails 4…如果这很重要的话。你是对的,这更像是一个RESTful困境,与任何特定的框架都没有关系。这取决于父模型和子模型的角色,以及仪表板是否“公开”任何其他资源。为了简单起见,我将假设父模型是作者,子模

我有一个“dashboard”类型的页面,显示来自许多不同模型(一个父模型和许多关联的子模型)的记录,并使用我当前保存在父控制器中的逻辑。我是rails新手,不知道是否最好创建一个单独的仪表板控制器,或者只保留父控制器以添加/编辑/索引/销毁父记录

这种类型的页面是否有最佳实践


我使用的是Rails 4…如果这很重要的话。

你是对的,这更像是一个RESTful困境,与任何特定的框架都没有关系。这取决于父模型和子模型的角色,以及仪表板是否“公开”任何其他资源。为了简单起见,我将假设父模型是作者,子模型是一本书

如果仪表板只包含与父模型相关的子集合,则可以考虑使用。例如类似于
/authors/{author\u id}/books
(以及
/dashboard
的别名,如果需要):

然后,逻辑属于
控制器

class BooksController < ApplicationController
  def index
    if params[:author_id]
      @author = Author.find(params[:author_id])
      @books  = @author.books

      return render '/books/author_index'
    else
      # Code for simple top level RESTful resource. E.g '/books'
      # ...
      @books = Book.all

      return render 'index'
    end
  end
end
class BooksController

然而,如果你的仪表板更宽,触摸多个域,你可以考虑仪表板本身作为一个资源(例如它自己的代码< DashboardController >代码>)。仪表板上的所有资源都与父级相关。

class BooksController < ApplicationController
  def index
    if params[:author_id]
      @author = Author.find(params[:author_id])
      @books  = @author.books

      return render '/books/author_index'
    else
      # Code for simple top level RESTful resource. E.g '/books'
      # ...
      @books = Book.all

      return render 'index'
    end
  end
end