(修訂整件事)
如果你想允許動態的匹配與正常寧靜的行車路線,有幾個選項 - (把它放在你的路由年底或者它會匹配一切)
match '*raw' => 'dynamic#show'
而且在dynamic_controller.rb
def show
parts = params[:raw].split '/'
# do logic here to set all variables used in views
render @resource_or_page
end
你也可以使用輸入的搜索功能和重定向到搜索的第一個結果。如果沒有結果,則返回404。
def show
results = search_method_here params[:raw].sub('/', ' ')
if results.any?
redirect_to results.first
else
raise ActionController::RoutingError.new 'Not Found'
end
end
而且,寧靜的路線內freindlier網址,試試這個:https://github.com/norman/friendly_id
我認爲它必須認識到,人們一般不用手操作的URL,其不錯的可讀性但對於他們要清楚他們在做什麼/去哪裏,他們更重要。
爲了迴應您的評論,我認爲您誤導了路由。如果您製作了兩條路線:category
和:page
,則它們與完全相同的網址匹配,但其中一條將其存儲在params[:category]
中,另一個存儲在params[:page]
中。爲了區分它,您需要具有不同數量的參數,比如:category/:product
或命名空間,或者可能是指定路由路由到的MVC的安靜路由。
你能發表一些代碼嗎?您的routes.rb文件將很好啓動。 – JGrubb 2012-08-07 12:11:38
我的路線是無用的。這是想法: 1)我將query_string傳遞給模型(URL映射器) 2)它返回控制器和動作 我找到了一種方法來做到這一點,通過簡單地創建每個單一的可能性使用每個例如。對於每個類別我創建一個馬赫 但是這種方式真的很慢,因爲每次我點擊鏈接時都會產生匹配。可能這不會發生在使用乘客的生產中,但我不能承擔這種風險。 你有沒有嘗試過這樣的事情? – 2012-08-07 15:34:40
我不明白你爲什麼認爲你的路線是無用的。您不應該循環遍歷每個可能的類別來查找匹配,這就是路由文件的用途,類似於'get':路徑文件中的category'=>'products#category''應該可以讓您到達那裏。問題是路由文件是從上到下讀取的,因此當您想要更符合用戶需求的標準URL或更少的標準URL進行匹配時,請牢記這一點。 – JGrubb 2012-08-07 17:32:54