You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Active Admin的每条路由末尾追加固定参数

Active Admin 全局路由统一追加指定参数解决方案

以下是三种可落地的实现方式,可根据你的业务场景选择:

方案1:重写 Active Admin 控制器默认URL参数(最推荐,无侵入性)

直接修改Active Admin内置的路径生成规则,所有通过Active Admin助手生成的链接、表单提交地址都会自动携带参数。

  1. 新建初始化文件 config/initializers/active_admin_url_params.rb,添加以下代码:
module ActiveAdmin
  module Helpers
    module Controller
      # 重写默认url参数配置
      def default_url_options
        # 可添加判断逻辑,仅在满足条件时追加参数
        super.merge(journey: params[:journey].presence || 1)
      end
    end
  end
end
  1. 重启服务生效,所有Active Admin的页面跳转、操作链接都会自动带上journey=1参数。

方案2:全局配置Rails路由默认参数

如果需要给全站路由都追加参数,也可以直接修改Rails全局的url生成规则:

  1. 在 config/application.rb 中添加配置:
module YourAppName
  class Application < Rails::Application
    # 原有其他配置
    config.action_controller.default_url_options = { journey: 1 }
    config.action_mailer.default_url_options = { journey: 1 } # 若需要邮件链接也带参数可加
  end
end
  1. 如果要仅作用于Active Admin路由,可在config/initializers/active_admin.rb的配置块中添加前置动作:
ActiveAdmin.setup do |config|
  # 原有其他配置
  config.before_action do
    next unless request.path.start_with?('/admin')
    request.query_parameters[:journey] ||= 1
  end
end

方案3:Rack中间件强制补全参数

如果存在第三方跳转、未走Rails路径生成的链接,可通过中间件拦截请求,自动补全参数后跳转:

  1. 新建中间件文件 app/middleware/add_journey_param.rb:
class AddJourneyParam
  def initialize(app)
    @app = app
  end

  def call(env)
    request = Rack::Request.new(env)
    # 仅处理/admin开头且未携带journey参数的请求
    if request.path.start_with?('/admin') && !request.params.key?('journey')
      # 保留原有其他查询参数,仅追加journey
      merged_params = request.params.merge('journey' => '1')
      redirect_url = "#{request.path}?#{merged_params.to_query}"
      return [302, { 'Location' => redirect_url, 'Content-Type' => 'text/html' }, ['Redirecting to target page']]
    end
    @app.call(env)
  end
end
  1. 在config/application.rb中注册中间件:
module YourAppName
  class Application < Rails::Application
    # 原有其他配置
    config.middleware.use AddJourneyParam
  end
end

注意事项

  • 若journey为动态值,可将代码中固定的1替换为从session、current_user或其他业务逻辑中读取的动态值
  • 若部分路径不需要携带该参数,可在对应逻辑中添加排除规则即可

内容的提问来源于stack exchange,提问作者ronaksharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 18:45:00