我正在尝试在rails 3中使用表单标记,但我一直收到路由错误:
没有路线匹配{:action =>“search”,:controller =>“posts”}。
以下是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中有一个名为search的方法。这是我的routes.rb文件中的内容:
post 'search' => 'posts#search'
resources :posts do
member do
post 'search'
get 'search'
end
end
我觉得我已尝试过路线文件中的所有内容,但没有任何效果。有一次我得到了for_for,但是当我点击提交按钮时,我的方法'搜索'得到了一个NoMethodError。
答案 0 :(得分:2)
您的路线“搜索”位于会员身上,因此匹配的网址为/ posts /:id / search。 但是,您不提供ID,因此错误。 您应该将搜索路径放在集合块中,如下所示:
resources :posts do
collection do
get 'search'
end
end
所以匹配的网址是/ posts / search。