Rails分离多个模型的页面控制器?什么是最好的?

时间:2014-11-11 21:12:32

标签: ruby-on-rails controller

我有一个"仪表板"显示来自许多不同模型(具有许多关联子模型的父模型)的记录的类型页面,并使用我当前保留在父控制器中的逻辑。我是rails的新手,想知道创建一个单独的Dashboard控制器是否更好,或者让Parent Controller仅用于添加/编辑/索引/销毁父记录。

此类网页是否有最佳做法?

我正在使用Rails 4 ......如果重要的话。

1 个答案:

答案 0 :(得分:1)

你是对的,这更像是一个RESTful困境,与任何特定框架无关。这取决于父母和儿童模型的作用以及仪表板是否暴露了'任何其他额外资源。为了简单起见,我假装父模型是作者,子模型是书。

如果仪表板仅包含与父模型相关的子集合,则可以考虑使用Nested Resources。 E.g与/authors/{author_id}/books类似的网址(如果需要,则为/dashboard的别名):

# routes.rb
resources :authors do
  resources :books
end

逻辑然后属于BooksController

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

但是,如果您的信息中心更广泛且涉及多个域,您可以将信息中心本身视为资源(例如,它自己的DashboardController)为described in this answer