首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

Rails 2.3.12上遇到的named route的诡异有关问题

2012-11-04 
Rails 2.3.12下遇到的named route的诡异问题周五的时候把网站升级到Rails 2.3.12,本来在本地测试都没有问

Rails 2.3.12下遇到的named route的诡异问题
周五的时候把网站升级到Rails 2.3.12,本来在本地测试都没有问题的,但是在服务器上遇到一个非常诡异的问题,足足用了一天一夜的时间。

本地:   Mac OS X 10.7,Ruby 1.8.7,Rails 2.3.12
服务器:Ubuntu 8.04,Ruby Enterprise Edition 1.8.7,Rails 2.3.12

在服务器上,但凡是在 routes.rb 里面定义的 named route 在调用的时候都会出问题:

#routes.rbmap.resources :members,:member => { :articles => :get ... },:collection => {...}map.show_user 'users/:title.:format',:controller => 'users',:action => 'show'#在views中调用这样的代码时<%= show_user_path(:title => user.name) %><%= articles_member_path(member) %>#错误信息如下:wrong number of arguments (0 for 1)(eval):4:in `default_url_options'   (eval):4:in `articles_member_path'   app/views/users/_user.html.erb:12


试过了无数方法,皆无效,后来看到有人也有类似的问题 https://github.com/rails/rails/commit/6a6b4392c16c665eb713705f2b38e959a658eeef
但是别人是把改代码改成现在rails 2.3.12里面的代码解决问题,我是把代码回滚到以前的代码解决了问题,当时我就傻了,想不到啊,想不到啊。

解决办法就是把rails的代码给改了:
# 注意两段代码  default_url_options 的参数#/usr/local/lib/ruby/gems/1.8/gems/actionpack-2.3.12/lib/action_controller/routing/optimisations.rb 23        GLOBAL_GUARD_CONDITIONS = [ 24           "(!defined?(default_url_options) || default_url_options.blank?)", 25           "(!defined?(controller.default_url_options) || controller.default_url_options.blank?)", 26           "defined?(request)", 27           "request" 28           ]改为 23         GLOBAL_GUARD_CONDITIONS = [ 24           "(!defined?(default_url_options) || default_url_options(nil).blank?)", 25           "(!defined?(controller.default_url_options) || controller.default_url_options(nil).blank?)", 26           "defined?(request)", 27           "request" 28           ]


由于本地测试是完全没有问题的,本地使用的东西和服务器唯一的不同就是Ruby的版本,本地用的是Ruby官方标准的 1.8.7 版本,服务器使用的是REE 1.8.7,目前我只能说是这个原因了。

热点排行
Bad Request.