Rails路由不适用于区分大小写的URL

时间:2013-02-25 06:38:46

标签: ruby-on-rails rubygems ruby-on-rails-3.2 rails-routing

使用此命令生成Pages Controller后 -

>rails g controller Pages Home About Contact

并取消评论match ':controller(/:action(/:id))(.:format)'档案中的routes.rb行。

当我访问我的网址时 -

http://localhost:3000/pages/home

抛出错误

  

未知行动

     

找不到PagesController

的操作'home'

然而,如果按照这样的方式访问,这是有效的 -

http://localhost:3000/pages/Home

小/ Up案例是我的第一个想法,所以我按照建议安装了route_downcaser HERE

现在问题是这两个网址都抛出相同的错误 -

http://localhost:3000/pages/home
http://localhost:3000/pages/Home

错误

  

未知行动

     

找不到PagesController

的操作'home'

让我知道如何解决此错误。

我在Github的项目 - Github URL

使用Windows 7

Rails版本 - 3.2.9

修改

routes.rb file - 

Addbootstrap::Application.routes.draw do
  get "pages/Home"

  get "pages/About"

  get "pages/Contact"

  get "pages/Drop_Down"

  match ':controller(/:action(/:id))(.:format)'
end

1 个答案:

答案 0 :(得分:3)

在ruby中,您不想使用upcased方法名称。以大写字母开头的名称保留给常量(类/模块)。

除此之外,如果你使用的是一个宝石,它会降低从Home到home的路线,并且该方法被命名为Home,那么这就是失败的原因。确保方法名称是低级的。


如果有人要指出这一点,我会抢先一步。 CapsCase方法名称在ruby中有效,它们不是常规的,可能会令人困惑。因此被认为是BadIdea。关于CapsCase名称唯一真正特别的事情是当它们被赋值时,如果你再次尝试分配它,ruby会引发警告。