2011-10-29 16 views
0

我有一個搜索表單需要POST到'users/search'。以下是相關的代碼片段: -POST從表單到自定義操作未被操作處理 - 路由錯誤改爲

形式

<%=simple_form_for @user, :url => search_user_path(@user), :input_html => {:method => :post} do |f|%> 
    <div id="top" style="width:979px; height:30px;"> 
    <%= select "search", :area_id, Area.find(:all).collect { |p| [p.name, p.id]}, {:selected => current_user.address.area} %> 
    <%= f.association :categories, :as => :check_boxes, :label => false%> 
    <%= f.submit "Submit"%> 
    </div> 
<% end %> 

我希望這張貼到用戶/:ID /搜索

的routes.rb

resources :users do  
    member do 
    post 'search' 
    end 
end 

耙路線| grep的搜索

search_user POST /users/:id/search(.:format) {:action=>"search", :controller=>"users"} 

所以路由存在

用戶控制器具有以下方法

def search 
    Rails.logger.debug('In users#search') 
end 

當我點擊提交我得到一個路由錯誤

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

ActionController::RoutingError (No route matches "https://stackoverflow.com/users/9/search"): 

我無能上這和經過大量浪費的研究後,我正在向社區尋求投入。任何指針將非常感激。謝謝。

僅供參考我在軌道上3.0.9和1.9.2的紅寶石

-Tarun

回答

1

你需要多寫這篇文章:

search_users_path(@user) 

而且你的表格是有點weired 。你可以簡單地寫

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

而不是

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

你不需要,因爲沒有這樣的路徑:method => :post

+0

無法使用search_users_path。如果你檢查我的routes.rb,你會發現這是一個成員方法,因此search_user_path(@user)實際上是正確的。 表單語法稍有不同,但我不確定這裏是否重要。 –

相關問題