`
yangzhihuan
  • 浏览: 168212 次
  • 性别: 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 recipes

    Rails Recipes是一本针对Ruby on Rails框架的实用书籍,它收集了一系列高效解决问题的技巧和方法,也被称为“Rails开发者的宝典”。作者们通过分享自己的经验和见解,为Rails程序员提供了一本既有实际操作指导又有...

    Rails101_by_rails4.0

    随着Rails版本的更新迭代,此书聚焦于一个特定的版本,帮助开发者掌握在Rails 4.0环境下开发应用所需的关键技能。 书中介绍了Ruby on Rails安装的最佳实践,以及如何通过Git、编辑器和Linux命令行等前置技能的学习...

    Ruby on Rails Guides v2 - Ruby on Rails 4.2.5

    - **命令**:在项目根目录下运行`rails server`即可启动Rails内置的Web服务器。 - **测试**:通过浏览器访问`http://localhost:3000`来查看应用是否正常运行。 #### 五、升级与回滚 - **升级**:当需要更新到Rails...

    rails飞信 gem plugin api 插件的问题解决方案

    标题中的“rails飞信 gem plugin api 插件的问题解决方案”涉及到的是在Ruby on Rails框架下,使用特定的gem(一种Ruby的库或插件)来集成飞信API时遇到的问题及解决方法。飞信是中国移动推出的一种即时通讯服务,...

    rails和mysql数据库连接中出现的问题以及解决办法

    在开发Web应用时,Rails框架和MySQL数据库的集成是一个常见的选择。然而,有时在尝试连接Rails应用到MySQL数据库时,可能会遇到一些问题...在遇到问题时,查看错误日志、查阅官方文档和社区资源是解决问题的关键步骤。

    Rails项目源代码

    Ruby on Rails,通常简称为Rails,是一个基于Ruby编程语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式。这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何...

    关于rails 3.1 cucumber-rails 1.2.0

    Rails 3.1 和 Cucumber-Rails 1.2.0 是两个在Web开发领域非常重要的工具,尤其对于Ruby on Rails框架的测试和自动化流程。本文将深入探讨这两个组件,以及它们如何协同工作来增强软件开发的效率和质量。 首先,...

    Rails的中文乱码问题

    标题中的“Rails的中文乱码问题”涉及到的是在使用Ruby on Rails框架开发Web应用时,遇到的中文字符编码不正确的问题。Rails是一个基于Ruby语言的开源Web开发框架,它遵循MVC(Model-View-Controller)架构模式。在...

    ruby on rails与MySql的环境配置——支持rails 2.3.5以上版本

    本文将详细介绍如何在Windows环境下配置Ruby on Rails以支持Rails 2.3.5及以上版本,并与MySQL进行无缝对接。 首先,我们需要安装Ruby for Windows。你可以从RubyForge网站上下载最新的One-Click Installer版本,...

    使用Aptana+Rails开发Rails Web应用(中文)

    在开发Web应用时,Ruby on Rails(简称Rails)框架因其高效、简洁的代码风格和强大的社区支持而备受青睐。Aptana是一款强大的集成开发环境(IDE),尤其适用于Rails项目的开发,它提供了丰富的特性来提升开发效率。...

    rails2-sample

    从给定的文件信息来看,我们正在探讨的是一本关于Ruby on Rails的书籍,书名为《Simply Rails2》,作者是Patrick Lenz。本书旨在为初学者提供深入理解Ruby on Rails框架的指南,从基础概念到高级主题均有涵盖,是...

    windows下配置netbeans开发rails

    将这些文件放在系统的PATH环境变量下,或者Rails项目的`bin`目录下,可以解决某些库依赖问题。 7. **开发环境配置**:在NetBeans中,你需要配置Ruby和Rails的路径,以及数据库连接信息。在IDE的首选项设置中,你...

    rails指南 中文版

    5. **Gemfile与Bundler**:Rails项目通常使用Gemfile来管理依赖库,Bundler工具则用于安装和管理这些依赖,确保在不同环境下项目的运行一致性。 6. **Scaffolding**:Rails提供了快速生成基本CRUD(Create, Read, ...

    Rails

    描述中提到的博文链接指向了一个ITEYE博客文章,尽管具体内容未提供,但通常这样的博客可能会包含Rails的使用技巧、最佳实践、新版本更新或者特定问题的解决方案。 标签 "源码" 暗示了可能涉及Rails的源代码分析或...

    RAILS2.1的中文版资料

    Rails 2.1增加了对时区的支持,这意味着应用程序可以更好地处理不同地理位置用户的时间显示问题。通过这一特性,开发人员能够确保应用程序中的日期和时间能够准确地反映用户的本地时间设置。 **脏数据追踪(Dirty ...

    rails 项目起步示例

    Rails是Ruby语言的一个著名Web开发框架,全称为Ruby on Rails,它遵循MVC(Model-View-Controller)架构模式,旨在提高开发效率和代码可读性。本示例"rails项目起步示例"是一个购物系统,非常适合初学者入门学习。 ...

    Ruby on Rails入门例子

    在"Ruby on Rails入门例子"中,我们可能会遇到以下关键概念: - **路由(Routes)**:Rails的路由系统将URL映射到特定的控制器动作,定义了应用的导航结构。在`config/routes.rb`文件中配置路由规则。 - **生成器...

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

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

    Ruby on Rails安装指南(Ruby 1.8.6+Rails 2.0.2)

    Ruby on Rails 安装指南 Ruby on Rails 安装指南是指安装 Ruby 1.8.6 和 Rails 2.0.2 的详细步骤。首先,需要下载 Ruby One-Click Installer 版本,并安装 Ruby。然后,下载 Rails 2.0.2 版本,并安装。接下来,...

    Rails下运行PHP程序Phuby.zip

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

Global site tag (gtag.js) - Google Analytics