Ruby on rails 如何在rails 3中的命名空间中指定对资源的操作?

Ruby on rails 如何在rails 3中的命名空间中指定对资源的操作?,ruby-on-rails,routing,ruby-on-rails-3,Ruby On Rails,Routing,Ruby On Rails 3,我有一个名称空间:shop中的resource:products,如下所示: namespace :shop do resources :products root :to => 'products#index' end <%= button_to "Edit", edit_shop_product_path(product) %> <%= button_to "Edit", edit_shop_product_path(product), :method =

我有一个名称空间:shop中的resource:products,如下所示:

namespace :shop do
  resources :products
  root :to => 'products#index'
end
<%= button_to "Edit", edit_shop_product_path(product) %>
<%= button_to "Edit", edit_shop_product_path(product), :method => :get %>
运行
rake routes
时,它输出以下内容:

edit_shop_product GET    /shop/products/:id/edit(.:format) {:action=>"edit", :controller=>"shop/products"}
但当我在局部视图中使用
编辑商店产品路径时,如下所示:

namespace :shop do
  resources :products
  root :to => 'products#index'
end
<%= button_to "Edit", edit_shop_product_path(product) %>
<%= button_to "Edit", edit_shop_product_path(product), :method => :get %>

我得到一个ActionController异常:
没有路径匹配“/shop/products/1/edit”

我错过了什么

  • controllers/
    目录下创建一个名为shop的目录
  • 在shop目录下创建一个名为
    products\u controller.rb
    的ruby文件
  • 命名控制器
    class Shop::ProductsController
  • controllers/
    目录下创建一个名为shop的目录
  • 在shop目录下创建一个名为
    products\u controller.rb
    的ruby文件
  • 命名控制器
    class Shop::ProductsController

  • 好的,最后我自己找到了答案。问题是
    按钮\u to
    方法默认生成POST http请求。通过将此更改为以下方式获得:

    namespace :shop do
      resources :products
      root :to => 'products#index'
    end
    
    <%= button_to "Edit", edit_shop_product_path(product) %>
    
    <%= button_to "Edit", edit_shop_product_path(product), :method => :get %>
    
    :获取%>
    

    或者使用
    link\u to
    方法,它就像广告宣传的那样有效。

    好的,我最终自己找到了答案。问题是
    按钮\u to
    方法默认生成POST http请求。通过将此更改为以下方式获得:

    namespace :shop do
      resources :products
      root :to => 'products#index'
    end
    
    <%= button_to "Edit", edit_shop_product_path(product) %>
    
    <%= button_to "Edit", edit_shop_product_path(product), :method => :get %>
    
    :获取%>
    

    或者使用
    link\u to
    方法,它可以像广告一样工作。

    所有这些都已经到位。索引、新建和创建操作按预期工作。渲染视图时,只有编辑操作因此错误而失败。不过,谢谢你的回复!我也是这么想的:)=我会看看这个周末是否有更多的时间调试它。所有这些都已经准备好了。索引、新建和创建操作按预期工作。渲染视图时,只有编辑操作因此错误而失败。不过,谢谢你的回复!我也是这么想的:)=我看看这个周末是否有更多的时间调试它。