rails 2.2.2中ym4r 的bug的修补

本文介绍了解决Rails 2.2.2环境下使用YM4R插件时出现的undefined method 'relative_url'错误的两种方法。一种是直接修改插件源代码,另一种是通过创建初始化文件来规避插件更新可能带来的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在rails2.2.2中使用ym4r插件时产生如下错误
"undefined method 'relative_url"

上网查了一下,有两种解决方法:
1.修改“vendor/plugins/ym4r_gm/gm_plugin/map.rb”文件,大约35或36行左右,将
a << "script src=\"#{ActionController::AbrastractRequest.relative_url_root}/javascript/ym4r-gm.js\" type=\"text/javascript\"> </script>\n" unless option[:without_js]
中的
#{ActionController::AbstractRequest.relative_url_root}

修改为
#{ActionController::Base.relative_url_root}
,修改过后重启服务器即可。
2.I made a file named "PatchYm4rGM.rb" 在 config/initializer 文件夹中新建文件 PatchYm4rGM.rb ,内容如下:
   class GMap
def self.header(options = {})
options[:with_vml] = true unless options.has_key?(:with_vml)
options[:hl] ||= ''
options[:local_search] = false unless options.has_key?(:local_search)
api_key = ApiKey.get(options)
a = "<script src=\"http://maps.google.com/maps?file=api&v=2.x&key=#{api_key}&hl=#{options[:hl]}\" type=\"text/javascript\"></script>\n"
a << "<script src=\"#{ActionController::Base.relative_url_root}/javascripts/ym4r-gm.js\" type=\"text/javascript\"></script>\n" unless options[:without_js]
a << "<style type=\"text/css\">\n v\:* { behavior:url(#default#VML);}\n</style>" if options[:with_vml]
a << "<script src=\"http://www.google.com/uds/api?file=uds.js&v=1.0\" type=\"text/javascript\"></script>" if options[:local_search]
a << "<script src=\"http://www.google.com/uds/solutions/localsearch/gmlocalsearch.js\" type=\"text/javascript\"></script>\n" if options[:local_search]
a << "<style type=\"text/css\">@import url(\"http://www.google.com/uds/css/gsearch.css\");@import url(\"http://www.google.com/uds/solutions/localsearch/gmlocalsearch.css\");}</style>" if options[:local_search]
a
end
end

这种方法不需要修改插件代码,所以避免了插件更新引发的问题。

详见:[url]http://railsforum.com/viewtopic.php?id=24839[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值