用于rack :: utils :: escape的nomethoderror

时间:2009-06-28 05:02:48

标签: ruby-on-rails ruby

我是铁杆新手,所以我为自己的无知而道歉。

我在方法之外的类中设置常量:

PARAM = { #... => ...
          'field' => escape('somethingwith/slashes')
}

并获取NoMethodError:未定义的方法'escape'

我尝试使用Rack :: Utils :: escape和Rack :: Utils.escape,但两者都不起作用。

提前致谢。

2 个答案:

答案 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行。