簡體   English   中英

Rails路由不適用於區分大小寫的URL

[英]Rails routing not working for case sensitive URLs

使用此命令生成Pages Controller后 -

>rails g controller Pages Home About Contact

並且在routes.rb文件中取消注釋行match ':controller(/:action(/:id))(.:format)'

當我訪問我的網址時 -

http://localhost:3000/pages/home

它拋出錯誤

未知的行動

無法找到PagesController的操作'home'

然而,如果這樣訪問,這是有效的 -

http://localhost:3000/pages/Home

小/ Up案例是我的第一個想法,所以我按照這里的建議安裝了route_downcaser

現在問題是兩個URL都拋出相同的錯誤 -

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

在ruby中,您不想使用upcased方法名稱。 以大寫字母開頭的名稱保留給常量(類/模塊)。

除此之外,如果你使用的是一個寶石,它會降低從Home到home的路徑,並且該方法被命名為Home,那么這就是失敗的原因。 確保方法名稱為downcased。


如果有人要指出這一點,我會搶先一步。 CapsCase方法名稱在ruby中有效,它們不是常規的,可能會令人困惑。 因此被認為是BadIdea。 關於CapsCase名稱唯一真正特別的事情是當它們被賦值時,如果你再次嘗試分配它,ruby會引發警告。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM