0

我在我的请求 URL 上使用 stringscanner 以获取用户当前选择的类别的名称,但我在处理空格和特殊字符时遇到了困难。

request.url.scan(/\?category=\w+/).to_s.gsub('?category=', '')

URL 示例后跟结果

http://localhost:3000/search?category=dog&search=&utf8=%E2%9C%93 => ["dog"]
http://localhost:3000/search?category=dog.com&search=&utf8=%E2%9C%93 => ["dog"]
http://localhost:3000/search?category=dog+cat&search=&utf8=%E2%9C%93 => ["dog"]

我正在尝试获取 ["dog"] ["dog.com"] 和 ["dog cat"],但目前卡住了。有任何想法吗?

注意:考虑从类别中删除空格并用破折号替换它们作为多个空格可能是有问题的,但如果可以创建一个函数来统治它们,那就太棒了。

4

2 回答 2

3

这是 Rails,你有理由不只是使用params[:category]吗?

于 2012-06-30T08:00:45.557 回答
2

如果您尝试提取参数,则可以使用parse_query

uri = "http://localhost:3000/search?category=dog+cat&search=&utf8=%E2%9C%93"
result = Rack::Utils.parse_query(URI(uri).query) #=> {"category"=>"dog cat", "search"=>"", "utf8"=>"\xE2\x9C\x93"}
result["category"] #=> dog cat
于 2012-06-30T07:27:16.417 回答