2014-10-06 39 views
0

我想知道如果有一種方法來使軌道應用程序,沒有控制器路徑工作。在鐵軌有沒有一個方法來創建一個url沒有子文件夾

通常一些路徑可能是
www.mysite.com/event/slug
www.mysite.com/event/this_is_the_first_event_slug
www.mysite.com/event/another_slug_here

我想知道如果有一種方法(在軌模式中)創建關閉主路徑頁
例如
www.mysite.com/slug
www.mysite.com/this_is_the_first_event_slug
www.mysite.com/ another_slug_here

我知道這是一件小事,但它讓我感到有點不舒服,我想設置它。

+1

其實,重複:http://stackoverflow.com/questions/3796979/overriding-a-resource-route-to -root-in-rails3-not-changing-the-path-helper – 2014-10-06 07:18:08

+0

這不是一回事。這是問如何刪除網址的動作方面。我試圖刪除url的控制器方面。它與1/0相比有所不同0/1 – baash05 2014-10-08 03:09:16

+0

**它是一樣的。**'new'和'create'默認沒有任何路由後綴。這留下資源前綴('訂戶',你稱之爲「控制器方面」,可能是因爲'SubscribersController')。並且對這個問題的接受答案描述瞭如何擺脫它。 – 2014-10-08 07:26:50

回答

0

是的,你可以。

routes.rb,不喜歡

match '/event_slug' => 'event#slug'

就是這樣。所以如果你輸入瀏覽器說www.mysite.com/event_slug那麼它肯定會考慮路線模式。

+0

自Rails 4以來,不推薦匹配關鍵字。也許'slug'是一個參數。 – Robin 2014-10-06 07:09:25

+0

問題在於event_slug就像事件的id。它們在應用程序啓動時未設置,但隨着更多事件的添加而增長。 – baash05 2014-10-06 07:09:30

+0

所以如果'event_slug'是一個參數,那麼路由模式可能會有所不同。 'get'/:event_slug_parameter',:to =>'event#event_slug''。我希望這工作 – Kushal 2014-10-06 07:12:27

1

您必須在您的routes.rb中定義另一條路線,也許這是您設置的最後一條規則之一,因爲其他路線應該首先匹配。

get 'event_:slug' => 'events#show' 

在你show方法帕拉姆slug是awailable作爲params[:slug]

如果需要,您可以使用rake routes從命令行驗證規則。當你添加新的路線routes.rb文件,該命令將顯示類似:

GET /event_:slug(.:format)     events#show 
+0

我認爲這可能是..我會測試它今晚,當我有代碼在手......謝謝。 – baash05 2014-10-08 03:11:13

+0

@ baash05怎麼樣? – Robin 2014-10-09 07:27:07

相關問題