如何在Rails Admin的自定义动作中实现新标签页跳转?
Rails Admin 自定义动作实现新标签页打开链接
你当前用后端redirect_to的方式没法直接控制浏览器新开标签,因为跳转是服务器端触发的,浏览器不会自动新开标签。不过Rails Admin有内置的方式实现需求,不需要额外引入JS,直接给自定义动作的按钮添加target="_blank"属性即可,分两种场景处理:
场景1:无需后端逻辑,直接跳转外部链接
如果你的object.url是确定的外部链接,不需要经过后端验证或处理,直接让按钮的链接指向目标URL并设置新标签属性:
config.actions do # 保留其他默认动作... member :open_external_link do # 可选:给按钮加个外部链接图标 link_icon 'fa fa-external-link' # 设置新标签属性,rel属性是安全最佳实践 link_attrs target: '_blank', rel: 'noopener noreferrer' # 直接指定按钮的跳转URL register_instance_option :url do object.url end end end
这样生成的按钮会直接以新标签页打开object.url,不需要走后端控制器的跳转逻辑,更高效。
场景2:需要经过后端逻辑处理(比如权限验证)
如果必须通过后端控制器做验证或其他逻辑,再跳转目标URL,只需在自定义动作配置里给按钮添加target="_blank",同时保留控制器的redirect_to代码:
config.actions do # 保留其他默认动作... member :your_custom_action do link_attrs target: '_blank', rel: 'noopener noreferrer' register_instance_option :controller do proc do # 这里可以添加权限验证、日志记录等后端逻辑 url = object.url redirect_to url, allow_other_host: true end end end end
点击按钮时,浏览器会新开一个标签页,后端逻辑在这个新标签页里执行完成后,再跳转到目标URL,满足你的需求。
内容的提问来源于stack exchange,提问作者Максим
相关产品推荐
相关产品推荐

