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

Rails Admin中show_in_app按钮仅部分模型可见的问题求助

解决Rails Admin中show_in_app动作仅部分模型可见的问题

首先得明确Rails Admin里show_in_app动作的默认显示逻辑:它只会在同时满足以下两个条件时,才会出现在模型的操作菜单中:

  1. 该模型对应的控制器已经定义了show动作
  2. 项目路由文件中存在该模型的show路由(一般由resources :model_name自动生成)

你提到已经给目标模型添加了show动作和视图,但配置only没生效,核心问题是你用错了配置位置——show_in_app的only/except规则不能直接写在全局config.actions块里,需要针对单个模型单独配置。

下面给你两种可行的解决思路:

方案一:全局开启,给指定模型强制启用

先在全局配置里保留show_in_app的开启状态,然后在需要显示该动作的模型配置块里强制激活它:

RailsAdmin.config do |config|
  config.actions do
    dashboard
    index
    new
    export
    bulk_delete
    show_in_app  # 全局层面开启这个动作
    show
    delete
    edit
  end

  # 给Model1配置show_in_app
  config.model 'Model1' do
    actions do
      show_in_app do
        visible true  # 强制让这个动作显示
      end
    end
  end

  # 给Model2配置show_in_app
  config.model 'Model2' do
    actions do
      show_in_app do
        visible true
      end
    end
  end
end

方案二:全局禁用,仅给目标模型单独添加

如果只想让特定模型拥有show_in_app动作,可以先全局不加载它,再给需要的模型单独配置:

RailsAdmin.config do |config|
  config.actions do
    dashboard
    index
    new
    export
    bulk_delete
    show
    delete
    edit
    # 全局层面不包含show_in_app
  end

  # 给Model1单独添加show_in_app
  config.model 'Model1' do
    actions do
      show_in_app
    end
  end

  # 给Model2单独添加show_in_app
  config.model 'Model2' do
    actions do
      show_in_app
    end
  end
end

额外排查点

如果按上面配置后还是不显示,建议检查这两处:

  • 运行rails routes命令,确认目标模型的show路由是否存在(比如是否有GET /model1/:id这样的条目)
  • 确认模型的控制器没有拦截show动作的权限验证(比如Devise的authenticate_user!如果配置不当,可能导致Rails Admin检测不到可用的show动作)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:23:28