breadcrumbs_on_rails配置show页面包屑提示缺失id参数报错如何解决
解决方案
核心报错原因
你在控制器类层面全局配置了需要id参数的project_path面包屑,类级别的add_breadcrumb会在所有控制器动作执行前触发,此时还未初始化@project实例,无法获取必填的id参数,因此路由匹配失败。
具体修改步骤
第一步:删除控制器类层面的无效show面包屑配置
直接删掉类定义下的这行代码:add_breadcrumb "show", :project_path这行是报错的核心根源,删除后不会再触发全局的路由匹配错误。
第二步:修正show动作内的面包屑配置
breadcrumbs_on_rails的路径参数需要直接传入路径方法的参数位,不要额外放在第三个参数位置,你之前注释的写法逻辑本身是正确的,调整后参考如下:def show @developer = @project.developer @description = @project.description # 跳转到项目详情页的面包屑配置,直接传入@project即可,Rails会自动读取id参数 add_breadcrumb "项目详情", project_path(@project) # 如果你需要跳转到项目的property子页面,按实际路由规则传参即可: # add_breadcrumb "项目属性", project_property_path(@project) end第三步:原有公共面包屑配置不需要修改
类层面保留的首页、项目列表页的面包屑配置是正常可用的,无需调整。
修改完成后重启服务即可,面包屑会按「home > properties > 项目详情」的结构正常渲染。
内容的提问来源于stack exchange,提问作者LJ-03
相关产品推荐
相关产品推荐

