我有一个"仪表板"显示来自许多不同模型(具有许多关联子模型的父模型)的记录的类型页面,并使用我当前保留在父控制器中的逻辑。我是rails的新手,想知道创建一个单独的Dashboard控制器是否更好,或者让Parent Controller仅用于添加/编辑/索引/销毁父记录。
此类网页是否有最佳做法?
我正在使用Rails 4 ......如果重要的话。
答案 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。