Ruby on rails 仅使用索引操作创建控制器是否是一种良好的做法?
我将要创建一个管理页面(/admin),并试图找出实现这一点的最佳方法。我发现的所有解决方案对于我的需求来说都太复杂了(管理页面的唯一目的就是编辑其中一个资源)。只有一个动作的控制器似乎是最简单的解决方案,在做这个之前我还有其他的选择吗? < P>有很多事情要考虑。Ruby on rails 仅使用索引操作创建控制器是否是一种良好的做法?,ruby-on-rails,ruby-on-rails-5,Ruby On Rails,Ruby On Rails 5,我将要创建一个管理页面(/admin),并试图找出实现这一点的最佳方法。我发现的所有解决方案对于我的需求来说都太复杂了(管理页面的唯一目的就是编辑其中一个资源)。只有一个动作的控制器似乎是最简单的解决方案,在做这个之前我还有其他的选择吗? < P>有很多事情要考虑。 如果页面用于编辑一个资源,为什么在/admin而不是/或/admin/resource或/admin/:id?如果需要,可以使用嵌套路由创建管理员命名空间。您甚至可以在路由中设置命名空间:admin,并在admin命名空间中为特定
- 如果页面用于编辑一个资源,为什么在
而不是/admin
或/
或/admin/resource
?如果需要,可以使用嵌套路由创建管理员命名空间。您甚至可以在路由中设置命名空间/admin/:id
,并在admin命名空间中为特定控制器设置根,而不是创建专用控制器:admin
- 为一个动作创建一个控制器本身并没有什么错,有时它确实有意义。但通常这些页面并不是专门用来编辑一个资源的——它们是仪表盘或特殊功能,不能很好地映射到资源/模型层次结构中
- 如果您发现需要几个静态页面,通常(根据Rails教程和其他源代码)将它们分组到一个控制器中
如果没有,您可以通读Rails路由指南()。您可以使用HTTP基本身份验证,并在操作之前使用
和仅
选项,仅为要密码保护的操作触发它
class ResourceController < ApplicationController
before_action :authenticate, only: [:admin_edit]
def admin_edit
# your action code here
end
def authenticate
authenticate_or_request_with_http_basic do |username, password|
username == "admin" && password == "admin@123"
end
end
end
class ResourceController
我读到了有关名称空间的文章,对于我的需求来说,这似乎是一种过度使用。不幸的是,创建管理页面的决定不是我的,所以我不能跳过它。我很高兴阅读您的第二个项目符号-它确实是一种仪表板(编辑资源+一些额外的统计数据)。我通常选择第三个bullet选项(Pages controller),但它总是不止一个自定义操作。感谢您的回复,这正是我所需要的。