【问题标题】:How to hide Add new option in Rails Admin如何在 Rails Admin 中隐藏添加新选项
【发布时间】:2013-08-12 15:45:44
【问题描述】:

我正在自定义 Rails 管理员:https://github.com/sferik/rails_admin,我需要为某些模型禁用/隐藏“添加新”选项。

任何帮助都会为我节省很多时间。提前致谢

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 rails-admin


    【解决方案1】:

    我使用以下方法在特定模型上实现此目的。希望这会有所帮助:

    config.actions do
      new do
        except ['Some Model']
      end
    end
    

    【讨论】:

    • 你好,但如果我在 url 中添加操作,则允许访问。示例http://localhost:3000/dashboard/user/new :/
    • @andres 使用上述 rails_admin DSL 只会从管理员中删除按钮。只要该操作的路线仍然存在,您就可以执行该操作。
    • 为了确定,您需要使用不带单引号的类名。喜欢except [User]
    【解决方案2】:

    答案在configuration documentation for actions。默认情况下,所有操作都是可能的,包括new。要自定义可能的操作,请在 config.actionsconfig/initilizers/rails_admin.rb 中列出您想要支持的所有操作,省略您不想支持的操作。例如,这里有一个配置块,它允许除new 之外的所有默认操作:

    # config/initilizers/rails_admin.rb
    RailsAdmin.config do |config|
      config.actions do
        # root actions
        dashboard
        # collection actions 
        index
        # `new` is NOT allowed
        export
        history_index
        bulk_delete
        # member actions
        show
        edit
        delete
        history_show
        show_in_app
      end
    end
    

    【讨论】:

    • 嗨,Rory,感谢您的快速回答。由于它在初始化程序中,因此适用于所有模型。它隐藏了所有模型的新动作,但我希望它隐藏特定模型中的新动作。
    • 那样的话,恐怕我也不知道怎么办了。也许RailsAdmin documentation 的其他部分解释了如何。也许您必须查看source code 来了解如何操作——this part 可能是相关的。或者 RailsAdmin 不支持该功能。
    • 如有必要,可能有一些技巧可以让您多次运行初始化程序,让您在对该模型执行任何操作时禁用 new 操作,并在访问任何其他模型时重新启用它。跨度>
    • 酷,这不可能仅使用 Rails_Admin。我们可以使用 CAN-CAN 轻松实现,感谢您的宝贵时间。
    • @Senthil 既然您提到了 CanCan,我记得文档中有 example can calls related to the new action,尽管我没有意识到这是相关的。
    【解决方案3】:

    要拥有多个模型,您必须将每个模型放在单引号中。例如,考虑以下配置:

    config.actions do
      dashboard
      index do
        except ['Address']
      end
      new do
        except ['Address', 'Employee', 'Setting']
      end
      export
      show
      edit do
        except ['Employee']
      end
    end
    

    这意味着:

    • 地址不包含在左侧的导航栏中
    • 您无法使用“添加新”按钮添加新地址员工或设置
    • 索引视图中没有可供员工编辑的铅笔图标。
    • 如果您有 User 模型,您可以在导航栏中看到它,对其进行编辑,然后在索引页面上添加一个新模型。
    • 您可以导出每个模型,但不能批量删除它们。

    【讨论】:

      【解决方案4】:

      用 Cancan 实现了它。您可以参考上面的答案以 rails admin 的方式进行操作。

      网址:https://github.com/sferik/rails_admin/wiki/CanCan

      【讨论】:

      • 这被选为答案,但事实并非如此。见我上面的回答。
      猜你喜欢
      • 2018-07-02
      • 1970-01-01
      • 1970-01-01
      • 2021-06-22
      • 2017-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      相关资源
      最近更新 更多