我在search_field_tag中调用search_path时遇到“No route matches”错误。搜索表单在我的标题中,这个想法只是为了能够对事件进行搜索。
这是routes.rb中的路由:
match '/events/search/:query' => 'events#search', :as => "search"
以下是搜索表单的代码。
<%= form_tag search_path, :method => :get do %>
<%= text_field_tag :query, params[:query] %>
<%= submit_tag "search", :name => :nil %>
<% end %>
(如何确保我提交此表单时它将提交到/ events / search /:query ?: query是search_field_tag中的值)
以下是我的events_controller
中的代码def search
@search_q = params[:query]
@events = Event.search @search_q #uses thinking sphinx
respond_with @events
end
我也创建了/views/events/search.html.erb
我很确定错误来自搜索表单中我说search_path的行。其他所有东西似乎都与我期望的完全一样,但是,例如,如果我访问/ events / search / someterm,它的工作方式与我期望的完全一样。这只是插入搜索表单并提交到事件#search的问题。有帮助吗?谢谢!
答案 0 :(得分:1)
我认为这里的问题是查询作为帖子请求传递。您的路线正在寻找:
/events/search
你定义的地方:
/events/search/:query
所以只需在路径末尾放下/:查询即可。查询在post上作为params传递。无需在路线中使用它。