我只想更改我的控制器的某些操作的路徑。更改某些操作的路徑
例如,我對我的ExampleController
有以下操作。
- 新
- 創建
- 編輯
- 銷燬
- 更新
- 指數
- 顯示
我很想有我new
,create
,delete
和update
行動在路徑/admin/example/
和其他(index
和show
)/example
上可用。
我當然可以通過添加新的路線就像這樣:
match "/admin/example/:id/destroy", to: "example#destroy", via: "destroy"
但我並不想這樣做,對於每一個控制器。我試着做以下幾點:
scope '/admin' do
resources :example, only: [:new, :edit, :create, :update, :destroy]
end
resources :example, only: [:index, :show]
這似乎是工作,但每當我想創建一個新的example
對象,它給了我下面的錯誤:
No route matches [POST] "/example"
這也結束了上網址/example
而不是/admin/example
我在正確的軌道上還是我在做一些完全錯誤的事。我想將所有基於example
的操作都保存在同一個控制器中。
更新:我嘗試以下基於@apneadiving的答案:
<%= form_for [:admin, @example] do |f| %>
<% end %>
但他導致NoMethodError
,而呈現的形式,與消息:
undefined method 'admin_example_path' for #<#<Class:0x007ff3cceeb778>:0x007ff3cbe85820>
這將導致一個錯誤,我更新的最新信息的問題。感謝您看看這個。 –
哦Isee,你使用範圍而不是命名空間......嗯,當你有管理員/標準用戶邏輯時,爲什麼你在一個控制器中保留動作? – apneadiving
那麼我使用before_action方法保護動作,並希望在一個控制器中保留一個對象的所有動作。這實際上只是一個整體變化(更好的網址)。 –