Ruby on rails 仅使用索引操作创建控制器是否是一种良好的做法?

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),并试图找出实现这一点的最佳方法。我发现的所有解决方案对于我的需求来说都太复杂了(管理页面的唯一目的就是编辑其中一个资源)。只有一个动作的控制器似乎是最简单的解决方案,在做这个之前我还有其他的选择吗?

< P>有很多事情要考虑。
  • 如果页面用于编辑一个资源,为什么在
    /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),但它总是不止一个自定义操作。感谢您的回复,这正是我所需要的。