Rails Admin中show_in_app按钮仅部分模型可见的问题求助
解决Rails Admin中show_in_app动作仅部分模型可见的问题
首先得明确Rails Admin里show_in_app动作的默认显示逻辑:它只会在同时满足以下两个条件时,才会出现在模型的操作菜单中:
- 该模型对应的控制器已经定义了
show动作 - 项目路由文件中存在该模型的
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
相关产品推荐
相关产品推荐

