我如何匹配多個控制器,例如一個ID?Rails 3路由如何匹配多個?
我在我的路線嘗試這樣做:如果你想匹配http://example.com/<something>
match '/:id' => 'kategoris#show'
match '/:id' => 'tags#show'
我如何匹配多個控制器,例如一個ID?Rails 3路由如何匹配多個?
我在我的路線嘗試這樣做:如果你想匹配http://example.com/<something>
match '/:id' => 'kategoris#show'
match '/:id' => 'tags#show'
Rails的控制器路由不適合你。
您可以創建一個單一的ThingsController:
match '/:id' => 'things#show'
,然後做適當的在你的ThingsController東西。
例如,在西納特拉(你可以安裝一個機架中間件),你可以這樣做:
get "/:id" do :id
if(@tag = Tag.find(:id))
haml :tag
elsif(@category = Category.find(:id))
haml :category
else
pass #crucially passes on saying 'not found anything'.
end
end
你會得到痛苦的REST式滑軌尖叫envangelists兩種方式。
謝謝!我會去做一個單一的控制器行動策略。我不知道我能從路由中獲得如此美妙的東西:) – Yeameen 2011-04-26 06:50:43
match 'kategoris/:id' => 'kategoris#show'
match 'tags/:id' => 'tags#show'
或
match '/:id/kategoris' => 'kategoris#show'
match '/:id/tags' => 'tags#show'
我想要一個扁平的鏈接結構 – 2011-04-26 06:41:03
如果您可以在您的標記ID和類別ID中實現可識別的區別,那麼您可以使用約束來查找它們。例如,如果類別始終以數字開頭並且標籤從不做,那麼您可以執行此操作。
match '/:id' => 'categories#show', :constraints => { :id => /^\d+/ }
match '/:id' => 'tags#show'
如果:id
以數字開頭第一行只會匹配。如果不匹配,則第二行捕獲剩餘物。所以; /67-something
被路由到類別控制器,/something
被路由到標籤控制器。
你不能這樣做:)只是想知道,爲什麼你想要做這樣的事情? – 2011-04-26 06:33:56
因爲我有類別和標籤。我想要一個平坦的鏈接結構 – 2011-04-26 06:35:36
這是廢話 – fl00r 2011-04-26 08:27:00