Ruby 代码错误修复:正则表达式语法错误
是否有提交 order 参数,如果有就赋值给 order 变量
order 参数用来控制商品的排序规则
if params[:order].present?
是否是以 _asc 或者 _desc 结尾
if match = params[:order].match(/^(.+)_(asc|desc)$/) # 如果字符串的开头是这 3 个字符串之一,说明是一个合法的排序值 if ['price', 'sold_count', 'rating'].include?(match[1]) # 根据传入的排序值来构造排序参数 # builder = builder.order puts("#{match[1]} #{match[2]}") end end end
这段代码报错的原因是在第7行的正则表达式匹配中使用了波浪号(~)作为匹配模式的前缀,而正确的语法应该是使用斜杠(/)作为前缀。
修正后的代码如下:
# 是否有提交 order 参数,如果有就赋值给 order 变量
# order 参数用来控制商品的排序规则
if params[:order].present?
# 是否是以 _asc 或者 _desc 结尾
if match = params[:order].match(/^(.+)_(asc|desc)$/)
# 如果字符串的开头是这 3 个字符串之一,说明是一个合法的排序值
if ['price', 'sold_count', 'rating'].include?(match[1])
# 根据传入的排序值来构造排序参数
# builder = builder.order
puts("#{match[1]} #{match[2]}")
end
end
end
修正后的代码中,将波浪号(~)替换为斜杠(/)来正确定义正则表达式,修复了报错的问题。
原文地址: https://www.cveoy.top/t/topic/pWwC 著作权归作者所有。请勿转载和采集!