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# 注意两段代码 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 ]