Rails实现各层级面包屑对应独立URL的方法问询
解决面包屑层级URL问题
这个问题很常见,核心是你需要逐步构建每个面包屑对应的累积路径,而不是直接复用完整的@prefix。咱们来调整视图代码,实现每个面包屑指向对应层级的URL:
<ol class="breadcrumb"> <li><%= link_to 'Start', admin_assets_path %></li> <% current_path_fragments = [] %> <% @prefix.split("/").each do |item| %> <% current_path_fragments << item %> <% # 构建当前层级的完整路径片段 %> <% current_full_path = current_path_fragments.join("/") %> <li> <%= link_to "/ #{item}", admin_assets_path(asset_id: current_full_path) %></li> <% end %> </ol>
逻辑说明:
- 初始化一个空数组
current_path_fragments,用来逐步存储路径片段 - 遍历
@prefix.split("/")得到的每个子目录名称:- 把当前
item追加到数组中,数组会依次变成[downloads]→[downloads, company]→[downloads, company, brochure] - 用
join("/")把数组拼成当前层级的完整路径字符串 - 把这个字符串作为
asset_id参数传入admin_assets_path,生成对应层级的URL
- 把当前
这样处理后,每个面包屑的链接就会完全符合你的需求:
downloads→http://localhost:3000/int/en/admin/assets?asset_id=downloads(如果你的路由是路径参数格式,会自动适配成你示例中的URL样式)company→http://localhost:3000/int/en/admin/assets?asset_id=downloads/companybrochure→http://localhost:3000/int/en/admin/assets?asset_id=downloads/company/brochure
内容的提问来源于stack exchange,提问作者AccNeeder
相关产品推荐
相关产品推荐

