2011-03-24 89 views
0

所以,如果我有一個單身的路線......Rails的:添加路由單身資源

resource :shared 

...我想有自定義動作的名稱,而不是標準的CRUD的名字,我還是做...

resource :shared do 
    collection do 
    get 'foo' 
    get 'bar' 
    match 'baz' 
    end 
end 

...或者我可以沒有「收集」塊,並將這些路線直接傳遞給單身人士?

在這種情況下,我不希望任何標準的CRUD路線要麼...的

有沒有更簡單,更清潔的方式設置路線爲我的共享資源,只有特定的AJAX相關的行動?我使用這個控制器非常稀疏,主要是它存在,以便shared視圖文件夾可以像我的頁腳和我的菜單...

建議?

回答

2

你可以使用match

比方說你有一個控制器叫做FooController,你可以做以下稱爲bar方法:

match "/foo/bar/" => "foo#bar", :as => "foo_bar"

這將匹配任何要求,無論是GET或POST,用方法bar

用方法FooController替換matchpostget如果你只想要一個特定的http動詞。

+0

控制器的名稱應該總是複數,所以「FoosController」而不是「FooController」和「foos#bar」而不是「foo#bar」。 – nickh 2012-10-03 23:05:50

0

資源的代碼如下所示:

collection do 
    post :create 
end if parent_resource.actions.include?(:create) 

new do 
    get :new 
end if parent_resource.actions.include?(:new) 

member do 
    get :edit if parent_resource.actions.include?(:edit) 
    get :show if parent_resource.actions.include?(:show) 
    put :update if parent_resource.actions.include?(:update) 
    delete :destroy if parent_resource.actions.include?(:destroy) 
end 

所以你基本上可以做同樣的事情,但你自己的名字。