2012-11-01 46 views
2

我有一個問題控制器和一個相關的模型和一些休息路線。下面是它是如何成立的routes.rb:鐵軌自定義休息路線與參數

resources :questions 

我想補充一點的格式爲/問題/空間/ ID(其中,ID是我想產生問題的ID的自定義路由一個小部件)。我希望這可以通過我的問題控制器中的「小部件」操作來處理。我試過很多東西,例如:

resources :questions do 
    member do 
     get 'widget/:id' 
    end 
end 

但是沒有任何工作。我確定我錯過了一些簡單的東西。有任何想法嗎?提前致謝。

回答

4

您不必指定id,因爲您是內部資源。它應該看起來像:

resources :questions do 
    member do 
     get 'widget' 
    end 
end 

您可以從Rails Guide得到更多的信息。看2.9.1節。

編輯:我只是注意到,你正試圖匹配get/questions/widget /:id。這將爲get/questions /:id/widget設置路線。這更符合Rails約定。如果你真的想要另一種方式,你需要設置一個自定義匹配語句:

match "https://stackoverflow.com/questions/widget/:id" => "questions#widget" 

但是,我會堅持約定。

+0

謝謝。但是,如果我嘗試諸如question_widget_url(@question)之類的東西,我會得到一個「未定義的方法」錯誤。 – MikeC

+0

如果您查看指南部分,它會告訴您Rails生成:method_:resource_(url/path)助手。在你的情況下,這將是widget_question_(URL /路徑)。 –

0

你爲什麼不使用這個路線:

resources :questions do 
    resources :widgets 
end 

它會創建一個像questions/:question_id/widgets/new路徑,爲您打造與問題的特定ID問題,新的部件。