2012-01-09 80 views
7

我已經搜索和搜索,我無法找到一個頁面,它列出了rails.rb在Rails 3中的語法。有指南,概述,甚至高級的例子,但爲什麼沒有一個頁面說明每個關鍵字的確切語法?此頁面Rails routes.rb語法

http://www.engineyard.com/blog/2010/the-lowdown-on-routes-in-rails-3/

含有大量的先進典型,但不會花時間去討論給出的所有實例的行爲。我很感激,如果有人可以指向我的網頁,打破了routes.rb的語法。

這是我想解決的問題。我有兩個模型modelA和modelB。關係是modelA has_many modelB和modelB belongs_to modelA。我在modelA的命名空間下爲modelB創建了控制器。所以在我的rails應用程序文件夾中,我有

app/controllers/modelA_controller.rb 
app/controllers/modelA/modelB_controller.rb 

我希望我的路線是這樣:

http://localhost:3000/modelA/:modelA_id/modelB/ [index] 
http://localhost:3000/modelA/:modelA_id/modelB/:modelB_id [show] 
etc. 

我試着在routes.rb中以下內容並沒有它的工作原理:

resources :modelA do 
    resources :modelB 
end 
-- 
resources :modelA do 
    member do 
    resources :modelB 
    end 
end 
-- 
namespace :modelA do 
    resources :modelB 
end 
-- 
match '/modelA/:modelA_id/modelB/action', :to => '/modelA/modelB#action' 

我知道我嘗試過的一些東西顯然是錯誤的,但是當你在單個問題上花費了2天時,任何事情都會發生!

+0

您是否嘗試過在軌道上指南路由? http://guides.rubyonrails.org/routing.html – leonardoborges 2012-01-09 01:30:06

回答

0

沒有人有關於路由語法的「明確」指南的原因是它非常靈活,因此您可能只需在該主題上編寫幾章。不過,我會建議:http://guides.rubyonrails.org/routing.html

從你的問題,這聽起來像你的命名空間modelAmodelB但你也想在idmodelA是路線本身。

因此,如果您ModelBController看起來像:

class ModelA::ModelBController < ApplicationController 
    # controller code here 
end 

,那麼你可以這樣做:

resources :modelA do 
    resources :modelB, :module => :modelA 
end 

但是,你要像命名空間的控制器你確定嗎?如果您只是想要像典型的has_many關係那樣嵌套資源,則不需要在modelA下的名稱空間modelB

相反,你必須:

/app 
    /controllers 
    /modelA 
     # some files 
    /modelB 
     # some files 

和你modelB控制器將是:

class ModelBController < ApplicationController 
    # controller code here 
end 

那麼你可以做

resources :modelA do 
    resources :modelB 
end 
+1

謝謝!我真的不是故意在modelA下創建modelB。我試圖弄清楚如何嵌套資源,以便'http:// myserver/modelB'不可訪問,並且只能通過'http:// myserver/modelA /:modelA_id/modelB'和某處推薦使用'導軌生成控制器modelA/modelB'。我現在意識到,我應該使用路線而不是通過對控制器進行範圍來實現我最初的目標。你可以告訴我是一個新手。那就是說,在什麼情況下建議範圍? – pvenky 2012-01-09 06:09:14

+0

像這樣命名控制器更像是組織它們,只是一個偏好問題。它只是增加了一點你現在可能不需要的路由的複雜性。我會建議留在簡單的嵌套資源路線。 – iwasrobbed 2012-01-09 12:46:55