2010-05-17 54 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

相关问题