`
yangzhihuan
  • 浏览: 165388 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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.rb
map.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,目前我只能说是这个原因了。
分享到:
评论

相关推荐

    rails No route matches 错误的解决方法

    有时候 rails 会出现: “No route matches”错误, 可以利用如下方法解决; 找到 config/routes.rb 文件, 打开编辑, 找到如下行: # See how all your routes lay out with “rake routes” 在这行下面添加一行, 内容...

    rails 2.3.2离线安装rails 2.3.2离线安装

    rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails ...

    提升Ruby on Rails性能的几个解决方案

    Ruby On Rails 框架自它提出之日起就受到广泛关注,在“不要重复自己”,“约定优于配置”等思想的指导下,Rails 带给 Web 开发者的是极高的开发效率。 ActiveRecord 的灵活让你再也不用配置繁琐的 Hibernate 即可...

    Rails下运行PHP程序Phuby.zip

    Ruby核心团队成员Aaron Patterson完成了phuby,它可以在Rails应用下运行php应用程序。项目的地址在https://github.com /tenderlove/phuby,尽管项目主持人Aaron发布了几个视频去证明phuby能让php在Rails下运行,但...

    [Rails] Crafting Rails Applications (英文版)

    [Pragmatic Bookshelf] Crafting Rails Applications Expert Practices for Everyday Rails Development (E-Book) ☆ 图书概要:☆ Rails 3 is a huge step forward. You can now easily extend the framework, ...

    Ruby on Rails Guides v2 - Ruby on Rails 4.2.5

    Ruby on Rails Guides v2 - Ruby on Rails 4.2.5

    Ruby on Rails Tutorial

    《Ruby on Rails Tutorial》中文版(原书第2版,涵盖 Rails 4) Ruby 是一门很美的计算机语言,其设计原则就是“让编程人员快乐”。David Heinemeier Hansson 就是看重了这一点,才在开发 Rails 框架时选择了 Ruby...

    张文钿 Rails Best Practices 幻灯片

    在日前结束的Kungfu Rails大会上,来自台湾的著名Rails人张文钿(ihower)为大家带来了一个关于Rails最佳实践的分享,演讲结束后Rails3的核心开发者Yehuda Katz主动索要幻灯片,其内容之精彩已不言而喻。 会后,...

    route_translator, 将 Rails 应用程序路由转换为各种语言,无需担心.zip

    route_translator, 将 Rails 应用程序路由转换为各种语言,无需担心 RouteTranslator RouteTranslator是一个 gem,允许你使用简单的字典格式管理应用程序路由的翻译。它以 fork Raúl Murciano 插件的一个插件插件的...

    Rails之道,完整扫描版

    《Rails之道》按照Rails的各个子系统进行组织编排,分别介绍了Rails的环境、初始过程、配置和日志记录,Rails的分配器、控制器、页面生成和路由,REST、资源和Rails,ActiveRecord的基础、关联、验证和高级技巧,...

    Rails项目源代码

    一个用Ruby on Rails搭建的图片分享的网站项目.完整源代码

    rails敏捷开发的购物车系统

    本资源是参照rails敏捷开发第四版书中的例子,rails的版本是rails3.2.6

    Bootstrap for Rails (2015)

    Bootstrap 3 和 Rails 4(样例用的是Ruby 2.1.1,Rails 4.1.4) Table of Contents Preface 1 Chapter 1: Introducing Web Application Development in Rails 7 Why Bootstrap with Rails? 8 Setting up a Todo ...

    adminlte-rails, AdminLTE Rails gem 将AdminLTE主题与 Rails 资产管道集成.zip

    adminlte-rails, AdminLTE Rails gem 将AdminLTE主题与 Rails 资产管道集成 AdminLTE Rails gem AdminLTE 是后端的高级 Bootstrap 主题。英镑 AdminLTE Rails gem 与 Rails 资产管道集成了英镑AdminLTE主题。安装将...

    rails-route-checker:Rails路线的整理工具

    RailsRouteChecker 一个掉毛工具,可以帮助你找到你所定义的任何路由routes.rb没有... 默认情况下,该配置文件是在.rails-route-checker.yml 。 可以在下面找到有关配置文件的更多信息。 rails-route-checker将扫描控

    Agile Web Development with Rails 4

    Ruby on Rails helps you produce high-quality, beautiful-looking web applications quickly. You concentrate on creating the application, and Rails takes care of the details., Tens of thousands of ...

    Rails101_by_rails4.0

    中文世界唯一一本Rails 4.0.0 + Ruby 2.0.0 的自學書籍

Global site tag (gtag.js) - Google Analytics