Rails错误的URI错误

时间:2015-03-13 15:03:05

标签: ruby-on-rails ruby-on-rails-4

如何通过正则表达式摆脱特殊字符?

我有一个search_controller,我使用CGI.escape执行此操作。

def index
  @page     = search_params[:page] || 1
  @per_page = search_params[:per_page] || 20
  @query    = URI.parse(CGI.escape(search_params[:query]).gsub("%40", "@").gsub("%C3%9F", "ß").gsub("%C3%BC", "ü"))

但是我想用某种正则表达式而不是白名单来列出我需要的所有其他字符,除了那些打破搜索的字符。

1 个答案:

答案 0 :(得分:0)

由于看起来你正在进行某种分页,我强烈建议使用像 kaminari will_paginate 这样的分页宝石。

如果你出于安全原因逃避查询,你在这里做的是黑名单一些特殊的字符,不推荐这样做,最好的方法是做某种白名单允许的字符。

  

http://guides.rubyonrails.org/security.html#whitelists-versus-blacklists

可能的正则表达式只能匹配字符

query.gsub(/([\W]+)/, '')

匹配a-z,A-Z,0-9中的字符,包括_(下划线)字符。

但我不建议在制作中使用这样的简单正则表达式。