我无法弄清楚如何在rails 3.0中执行此操作。我有一个控制器,products
和一个操作,search
,并在routes.rb
我试过了
resources :products, :collection => {:search => :post }
和
match 'products/search' => 'products#search', :via => [:get, :post]
以及许多其他设置,但每当我访问products/search
时,我仍然会收到错误报告,指出无法为动作search
找到ID为show
的产品。谁知道我做错了什么?
感谢。
答案 0 :(得分:10)
你很亲密。
resources :products do
collection do
match 'search', :via => [:get, :post]
end
end
或者,您也可以这样做:
resources :products do
match 'search', :on => :collection, :via => [:get, :post]
end
有关详细信息,请参阅Edge Guides的Rails Routing from the Outside In:
答案 1 :(得分:4)
在Rails 3中,collection
现在是一个块:
resources :products do
collection do
get :search
post :search
end
end
这样您就可以使用ProductsController#search
或GET
请求访问POST
操作。