Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 配置非restful路由_Ruby On Rails_Ruby_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 配置非restful路由

Ruby on rails 配置非restful路由,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我不知道如何在rails 3.0中实现这一点。我有一个控制器,products,还有一个动作,search,我在routes.rb中试过 resources :products, :collection => {:search => :post } 及 和许多其他设置,但每当我访问产品/search时,仍然会收到一个错误,抱怨无法找到id为search的产品来执行操作show。有人知道我做错了什么吗 谢谢。在Rails 3中,集合现在是一个块: resources :product

我不知道如何在rails 3.0中实现这一点。我有一个控制器,
products
,还有一个动作,
search
,我在
routes.rb中试过

resources :products, :collection => {:search => :post }

和许多其他设置,但每当我访问
产品/search
时,仍然会收到一个错误,抱怨无法找到id为
search
的产品来执行操作
show
。有人知道我做错了什么吗


谢谢。

在Rails 3中,
集合现在是一个块:

resources :products do
  collection do
    get :search
    post :search
  end
end
这将允许您使用
GET
POST
请求访问
ProductsController#search
操作。

您已接近

resources :products do
  collection do 
    match 'search', :via => [:get, :post]
  end
end
或者,您也可以执行以下操作:

resources :products do
  match 'search', :on => :collection, :via => [:get, :post]
end
有关更多信息,请参见边缘辅助线的详细信息,具体如下:


哇,我不知道我怎么会错过“从外到内路由”页面的那一部分。令人惊叹的。谢谢,伙计们,成功了,没问题。很高兴我们能帮忙很遗憾你不能把我们两个都标为答案=D
resources :products do
  match 'search', :on => :collection, :via => [:get, :post]
end