2011-10-06 88 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