Ruby与Nanoc技术求助:创建批量手册搜索URL
帮你生成Nanoc的全手册搜索URL
嘿,作为Ruby和Nanoc的新手就能接手项目,已经超棒啦!我来一步步帮你实现这个一次性列出所有SUV手册的搜索URL需求~
首先,先理清楚你现有代码的逻辑:它已经能筛选出所有标签为suv的汽车手册,还做了分栏展示。现在要做的就是把这些筛选好的手册整合到一个搜索URL里,点击就能一次性查看所有结果。
方案1:基于手册标识生成聚合搜索URL
如果你的搜索页面是通过手册的唯一标识来批量查询的,可以这么做:
<div> <% # 原有的手册筛选逻辑 manuals = @items.find_all('/manuals/autos/*') .select {|item| item[:tag] == 'suv' } .sort_by {|item| item[:search] } # 获取所有手册的唯一标识(这里用Nanoc的item.identifier,你也可以换成item[:slug]或其他自定义字段) manual_identifiers = manuals.map { |item| item.identifier.to_s.tr('/', '-') }.join(',') # 拼接搜索URL,假设你的搜索页面路径是/search,参数名是manuals all_manuals_search_url = "/search?manuals=#{manual_identifiers}" %> <!-- 展示搜索链接 --> <p><a href="<%= all_manuals_search_url %>">查看所有SUV手册</a></p> <!-- 你原有的分栏展示代码 --> <% manuals.each_slice((manuals.size / 4.0).ceil).each do |manuals_column| %> <!-- 这里保留你原来的分栏内容逻辑 --> <% end %> </div>
方案2:基于标签直接生成搜索URL
如果你的搜索系统支持按标签筛选(这其实更简洁好维护!),那根本不需要手动拼接所有手册ID,直接用你已经在筛选的suv标签就行:
<div> <% # 原有的手册筛选逻辑 manuals = @items.find_all('/manuals/autos/*') .select {|item| item[:tag] == 'suv' } .sort_by {|item| item[:search] } # 直接生成按标签搜索的URL all_manuals_search_url = "/search?tag=suv" %> <p><a href="<%= all_manuals_search_url %>">查看所有SUV手册</a></p> <!-- 你原有的分栏展示代码 --> <% manuals.each_slice((manuals.size / 4.0).ceil).each do |manuals_column| %> <!-- 这里保留你原来的分栏内容逻辑 --> <% end %> </div>
小提示
- 如果你用方案1,记得在搜索页面里处理
manuals参数:把逗号分隔的字符串拆成数组,再用@items.find_all匹配对应的手册。 - 方案2的前提是你的搜索页面已经支持通过
tag参数筛选内容,这样以后新增SUV手册也不用修改这个链接,维护起来更省心~
内容的提问来源于stack exchange,提问作者a_citizen
相关产品推荐
相关产品推荐

