我有一个资源:命名空间中的产品:shop,像这样:
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"
我错过了什么?
答案 0 :(得分:1)
好的,我最终找到了答案。问题是button_to
方法默认生成POST http请求。将此更改为GET,如下所示:
<%= button_to "Edit", edit_shop_product_path(product), :method => :get %>
或者使用link_to
方法,它的工作方式与宣传的一样。
答案 1 :(得分:0)
controllers/
目录products_controller.rb
的红宝石文件
class Shop::ProductsController < BaseController