2010-11-29 123 views
0

我有一個自定義路線的link_to(如果我正確地這樣做,這是我第一次這樣做了),看起來像這樣:創建自定義路由

map.connect 'purchases/type/:type', :controller => 'purchases', :action => 'index' 

,所以我想創建一個link_to將使用該網址/購買/類型/(somenumber)

或者我完全打開一個更好的方式來做到這一點。

編輯:

我試圖用一個類別(類型)對指數進行篩選。所以,如果我點擊鏈接將/ /採購/類型/ 1,將顯示類型1的所有項目。我不希望這在節目中,我可以做到/ purchases /?type = 1,但即時嘗試使網站看起來更好。

回答

6

未經測試,但我相信這是你想要什麼叫吧...

map.purchase_type 'purchases/type/:type', :controller => 'purchases', :action => 'index' 

然後

link_to 'foo', purchase_type_path(:type => 'your_type') 

好運。

1

基於http://www.tutorialspoint.com/ruby-on-rails-2.1/rails-routes.htm(節 「命名的路線」),我會嘗試以下方法:

map.purchases_for_type 'purchases/type/:type', :controller => 'purchases', :action => 'index' 

而且我認爲,那麼你會用link_to 'link text', purchases_for_type(@type_param)


僅供參考調用它,我會包括Rails3的方式來做到這一點:

match '/purchases/type/:type' => 'purchases#index', :as => "purchases_for_type", :via => "get" 

或更好的(RESTful):

match '/type/:type/purchases' => 'purchases#index', :as => "purchases_for_type", :via => "get" 

你會再與link_to 'link text', purchases_for_type(@type_param)

+0

我收到一個未定義的方法`purchases_for_type',所以我猜我會做錯事。我在maps.purchases中將routes.rb和link_to放在我的視圖中。 purchases_for_type(<這是一個數字,是類型的id>)。這是否正確? – 2010-11-29 00:32:24

+0

我的rails2是生鏽的...也許嘗試類似Cory的建議:`link_to'鏈接文本',purchases_for_type(:type => @type_param)` – 2010-11-29 00:41:24