小编pan*_*ggi的帖子

从Rails 3.0.3中的URL正确Unescape特殊字符

我正在使用Rails 3.0.3和REE(Ruby 1.8.7)和gem'mysql2','0.2.6'

我的项目中有一个搜索功能,可以让人们使用URL或使用表单来使用GET方法,然后生成URL.

例:

我想搜索:

起源城市:" Århus,丹麦 "和目的地城市:" Asunción,Paraguay "

它们都有一个特殊字符:" Å "和" ó ",因此当有人点击搜索按钮时,URL就会生成这样的符号.

?&origin=%C5rhus%2C%20Denmark&destination=Asunci%F3n%2C%20Paraguay
Run Code Online (Sandbox Code Playgroud)

问题:

当我搜索那个城市时,它并没有像我想要的那样(我尝试使用像CGI,URI,甚至是一些宝石).

当我在控制台看到时,ActiveRecord收到了这样的查询:

Parameters: {"destination"=>"Asunci?n, Paraguay", "origin"=>"?rhus, Denmark", "sort"=>"newest"}
City Load (0.1ms)  SELECT `cities`.* FROM `cities` WHERE (`cities`.`name` = '?rhus') ORDER BY cities.name ASC
City Load (6.8ms)  SELECT `cities`.* FROM `cities` WHERE (`cities`.`name` = 'Asunci?n, Paraguay') ORDER BY cities.name ASC
Run Code Online (Sandbox Code Playgroud)

结论:找不到城市 :(

但是,我发现了一件有趣的事:

  • 当我对与此函数关联的文件发生错误时,输出将如下所示:

    请求

    Parameters:
    {"destination"=>"Asunción,
    Paraguay",
    "origin"=>"Århus,
    Denmark",
    "sort"=>"newest"}
    
    Run Code Online (Sandbox Code Playgroud)

这是一个有效的!

题:

你们有个想法如何解决这个问题吗?提前致谢 :)

ruby encoding activerecord escaping ruby-on-rails

7
推荐指数
1
解决办法
6657
查看次数

标签 统计

activerecord ×1

encoding ×1

escaping ×1

ruby ×1

ruby-on-rails ×1