Rails如何从数组映射名称与ID以构建link_to链接?
修改方案
你的问题出在@parents.map(&:name)这一步——把分类对象转换成纯名字数组后,丢失了id信息。直接遍历原分类对象集合就能同时拿到name和id,具体修改如下:
修改后的视图代码
<% @parents.each do |parent| %> <%= link_to parent.name, new_sr_path(class_id: parent.id, sub: :true), class: "form-control" %><svg ...</svg> <% end %>
后端逻辑保持不变
@parents = @classification.ancestors.to_a.reverse if params[:class_id].present?
改动说明
- 去掉
map(&:name),直接遍历@parents里的分类对象,这样每个parent都能同时访问到name(面包屑显示文本)和id(路径参数) - 把
link_to里的class_id: parent改成class_id: parent.id,确保传递的是分类的id而非名称 - 保留
reverse是为了让面包屑从最顶层父级到当前分类的直接父级顺序展示,符合面包屑的层级逻辑
内容的提问来源于stack exchange,提问作者spacerobot
相关产品推荐
相关产品推荐

