2011-10-06 199 views
2

我試圖讓一個表單標籤在軌道3個工作,但我不斷收到一個路由錯誤:的form_tag不路由正確

沒有路由匹配{:動作=>「搜索」,:控制器=>「上崗」 }。

下面是for_tag代碼:

<%= form_tag search_post_path, method: :get do %> 
    <br /> 
    <fieldset> 
     <legend>Search</legend> 
     <%= text_field_tag :search, params[:search], :id => 'search_field' %> 
     <%= submit_tag "Search", :name => nil %> 
     <%= link_to_function "Clear", "$('search_field').clear()" %> 
    </fieldset> 
    <br /> 
    <% end %> 

我有我posts_controller被稱爲搜索的方法。這是放什麼東西在我的routes.rb文件:

post 'search' => 'posts#search' 

    resources :posts do 
    member do 
     post 'search' 
     get 'search' 
    end 
    end 

我覺得我已經在我的路線文件,嘗試一切並沒有什麼工作。有一次,我得到了for_for來顯示,但是當我點擊提交按鈕時,我搜索到了一個N​​oMethodError。

回答

2

您路由「搜索」是在一個成員上,所以匹配的URL是/ posts /:id/search。 但是,您不提供ID,因此是錯誤。 你應該把搜索路徑集合塊中,像這樣:

resources :posts do 
    collection do 
    get 'search' 
    end 
end 

所以匹配的網址是/職位/搜索。

+0

我試過,但我得到一個NoMethodError:undefined方法'搜索' – user972276

+0

哦,是的,它應該是search_posts_path,而不是search_post_path。 – DuoSRX