Ruby on rails 从表单到自定义操作的POST不是由操作路由错误处理的

Ruby on rails 从表单到自定义操作的POST不是由操作路由错误处理的,ruby-on-rails,custom-action,rails-routing,Ruby On Rails,Custom Action,Rails Routing,我有一个搜索表单需要发布到“用户/搜索”。以下是相关的代码片段:- 形式 rake路由| grep搜索 search_user POST /users/:id/search(.:format) {:action=>"search", :controller=>"users"} 所以路线是存在的 用户控制器具有以下方法 def search Rails.logger.debug('In users#search') end 当我点击提交时,我得到一个路由错误 Starte

我有一个搜索表单需要发布到“用户/搜索”。以下是相关的代码片段:-

形式

rake路由| grep搜索

search_user POST   /users/:id/search(.:format)  {:action=>"search", :controller=>"users"}
所以路线是存在的

用户控制器具有以下方法

def search
  Rails.logger.debug('In users#search')
end
当我点击提交时,我得到一个路由错误

Started POST "/users/9/search" for 127.0.0.1 at 2011-10-28 14:11:04 +0530

ActionController::RoutingError (No route matches "/users/9/search"):
我对此一无所知,在浪费了大量的研究之后,我求助于社区寻求投入。任何指点都将受到极大的赞赏。谢谢

仅供参考,我使用的是rails 3.0.9和ruby 1.9.2


-Tarun

你需要用复数形式写:

search_users_path(@user)
你的表格也有点奇怪。你可以简单地写

<%= form_for @user, search_users_path(@user) do |f| %>

而不是

<%=simple_form_for @user, :url => search_user_path(@user), :input_html => {:method => :post} do |f|%>
search_user_path(@user),:input_html=>{:method=>:post}do | f |%>

您不需要
:method=>:post

无法使用搜索用户路径,因为没有这样的路径。如果您检查my routes.rb,您将看到这是一个成员方法,因此search_user_path(@user)实际上是正确的。表单语法略有不同,但我不确定这在这里是否重要。
<%= form_for @user, search_users_path(@user) do |f| %>
<%=simple_form_for @user, :url => search_user_path(@user), :input_html => {:method => :post} do |f|%>