2010-05-17 34 views
1

我有一個資源:產品中的命名空間:商店,就像這樣:如何在rails 3中的命名空間中的資源上指定操作?

namespace :shop do 
    resources :products 
    root :to => 'products#index' 
end 

當運行rake routes它輸出以下內容:

edit_shop_product GET /shop/products/:id/edit(.:format) {:action=>"edit", :controller=>"shop/products"} 

但是,當我使用edit_shop_product_path的局部視圖,像這樣:

<%= button_to "Edit", edit_shop_product_path(product) %> 

我得到一個ActionController的例外:No route matches "/shop/products/1/edit"

我錯過了什麼?

回答

1

好下名爲products_controller.rb紅寶石文件,我發現自己的答案在結束。問題是button_to方法默認生成POST HTTP請求。通過這種改變,以這樣的GET:

<%= button_to "Edit", edit_shop_product_path(product), :method => :get %> 

或使用link_to方法它像宣傳的那樣。

0
  1. 創建一個名爲商店目錄controllers/目錄下
  2. 創建店鋪目錄
  3. 名稱控制器class Shop::ProductsController < BaseController
+0

所有這些都已到位。索引,新建和創建操作按預期工作。這只是在渲染視圖時出現此錯誤的編輯操作失敗。 感謝您的回覆,但! – harald 2010-05-19 07:04:41

+0

這很奇怪。它應該工作。 – 2010-05-19 07:24:25

+0

這就是我的想法:)=我會看看我是否有更多時間在本週末進行調試。 – harald 2010-05-19 11:18:03

相關問題