我是铁杆新手,所以我为自己的无知而道歉。
我在方法之外的类中设置常量:
PARAM = { #... => ...
'field' => escape('somethingwith/slashes')
}
并获取NoMethodError:未定义的方法'escape'
我尝试使用Rack :: Utils :: escape和Rack :: Utils.escape,但两者都不起作用。
提前致谢。
答案 0 :(得分:2)
您可以使用CGI.escape。
# lib/my_foo
class MyFoo
THINGS = {
:hi => CGI.escape("well hello, there.")
}
end
如果您在Rails环境之外执行此操作,则还必须require "cgi"
。
答案 1 :(得分:2)
您使用的是哪个版本的Rails。如果您使用的是Rails 2.3,则应该有Rack可用。看看这个:
>> require "rack" # Rails 2.3 and above has already done this
=> true
>> Rack::Utils.escape("the quick brown fox")
=> "the+quick+brown+fox"
如果您使用的是早于2.3版本的Rails,则需要自行安装和使用Rack。
sudo gem install rack
或者,如果您从Rails内部管理gem,请将以下行添加到Initializer块内的environment.rb中:
config.gem "rack", "1.0.0"
升级到Rails 2.3或更高版本后,您将能够使用Rails内置的Rack版本,并且可以删除config.gem行。