我在本地运行了以下代码,其中:query
为"new york"
且excerpt
字符串包含"New York"
:
<%= excerpt.gsub(params[:query].to_s, '<strong><span style="background-color: yellow">\0</span></strong>').html_safe %>
然后gsub
匹配"New York"
。换句话说,gsub
不区分大小写。但是,在Heroku上,匹配仅在完全匹配时发生,即"new york"
未与"New York"
同化。
我将代码上面的代码更改为:
<%= excerpt.gsub(/#{params[:query].to_s}/i, '<strong><span style="background-color: yellow">\0</span></strong>').html_safe %>
现在它在本地和Heroku上工作。
之前我因为数据库格式而遇到localhost和Heroku部署之间的差异:我在本地使用SQLite,在Heroku上使用Postgres,其中区分大小写规则对于查询不同。但是因为这只是对字符串变量执行gsub,所以我无法弄清楚当服务器不会在本地实例找到匹配的原因时。我在这里错过了什么吗?
答案 0 :(得分:0)
如果您将字符串作为第一个参数传递给gsub
,它将只匹配该字符串。字符串不区分大小写匹配的概念。 Heroku上的行为是正确的行为。而是你的本地环境以某种方式搞砸了。