abc.com/news?street=2&area=3$price=6
到
abc.com/news-2-3-6
的PARAMS街道,面積和價格都是可選的
我的路線喜歡
match "/news(-:street-:area-:price)" => "news#index",:as => :news_index
它不太好。
abc.com/news?street=2&area=3$price=6
到
abc.com/news-2-3-6
的PARAMS街道,面積和價格都是可選的
我的路線喜歡
match "/news(-:street-:area-:price)" => "news#index",:as => :news_index
它不太好。
您的路線有兩個技術問題,我還會提到一個大問題。
首先,您要添加一個可選分段(-:street-:area-:price)
,這意味着要麼必須顯示所有術語,要麼不顯示任何術語。如果你想每一段是可選的,你需要做的是:
match "/news(-:street(-:area(-:price)))" => "news#index"
其次,你不能指定哪些類型的字符每個方面都可以包含。在你的例子中,news-2-3-6
將結束設置:street
爲「2-3-6」,並將:area
和:price
留空。你需要告訴路由哪些字符可以接受每個變量段。以下允許每個包含一個或多個數字:
match "/news(-:street(-:area(-:price)))" => "news#index",
:street => /\d+/, :area => /\d+/, :price => /\d+/
但是從長遠來看,這些修復都無濟於事。這種「搜索」網址是一個非常糟糕的主意,因爲每個細分都取決於以前細分的存在。我的意思是,不可能提供:price
沒有:area
和:street
,並且不可能在沒有:price
的情況下提供:area
。要僅指定:price
,您的URL必須看起來像/news-0-0-6
。
你這樣做的理由也有根本的缺陷。這是而不是 SEO。與包含傳統查詢字符串的網址相比,包含以連字符分隔的數字段的URL爲更差。至少傳統查詢字符串包含一些可轉位術語,如street
和price
。
「效果不好。」有什麼問題? – Vache
當我點擊<%= link_to street.name,params.merge(:street => street)%> 我得到像「news?street = 1」這樣的網址 – doabit