2009-06-28 116 views
1

我是新来的rails,所以我为我的无知道歉。nomethoderror for rack :: utils :: escape

我的方法之外设定恒定的一类:

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

,并获得NoMethodError:未定义的方法“逃离”

我试过架:: utils的::逃生和机架:: Utils.escape代替,但两者都不起作用。

在此先感谢。

回答

2

您可以使用CGI.escape。

# lib/my_foo 
class MyFoo 
    THINGS = { 
    :hi => CGI.escape("well hello, there.") 
    } 
end 

如果您在Rails环境之外执行此操作,则您还必须使用require "cgi"

+0

给了我同样的错误。未定义的方法'转义'为# 任何想法? – user117046 2009-06-28 05:53:14

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的宝石,将下面的行添加到您的environment.rb初始化块中:

config.gem "rack", "1.0.0" 

一旦升级到Rails 2.3或更高版本,将能够使用Rails内置的Rack版本,并且您可以删除config.gem行。