【问题标题】:Custom route for activeadmin actions?activeadmin 操作的自定义路由?
【发布时间】:2023-03-31 09:43:01
【问题描述】:

我正在使用 activeadmin 创建一个页面来更新当前用户的密码。我有一个非持久化模型来检查密码验证等。我的问题是当我尝试时

ActiveAdmin.register UpdatePassword do
    actions :edit, :update
end

它创建路由 /update_passwords/:id 和 /update_passwords/:id/edit。

我想通过 get 和 put 将这些路由更改为 /update_passwords。

有什么办法可以改变吗?

【问题讨论】:

    标签: ruby-on-rails activeadmin


    【解决方案1】:

    我找不到使用 activeadmin 的方法,但手动定义路由:

    #config/routes.rb
    match "/admin/update_passwords" => 'admin/update_passwords#edit', via: :get, as: "admin_update_passwords"
    match "/admin/update_passwords" => 'admin/update_passwords#update', via: :post
    

    【讨论】:

      【解决方案2】:

      虽然问题大约有 2 年的历史,但您可以使用collection_actionmember_action 实现路由以及自定义方法。 Refer this.

      【讨论】:

      • 文档没有说明如何在显示页面上设置约束。比方说,通常该资源由 id 查看。现在,我希望能够通过他的电子邮件查看,所以我需要更多的约束。如何做到这一点?
      【解决方案3】:

      在我看来,控制器名称 UpdatePassword 令人困惑。

      路径最终是这样的:

      edit_admin_update_passwords_path
      update_admin_update_passwords_path
      

      我认为这样会更好:

      ActiveAdmin.register Password do
        actions :edit, :update
      end
      

      ActiveAdmin.register User do
        actions :edit, :update
      end
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-26
        • 2011-12-03
        • 1970-01-01
        • 1970-01-01
        • 2017-09-05
        相关资源
        最近更新 更多