Rails 3命名路径与段密钥“无路由匹配”搜索表单

时间:2012-04-13 03:56:50

标签: ruby-on-rails-3 routes

我在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的问题。有帮助吗?谢谢!

1 个答案:

答案 0 :(得分:1)

我认为这里的问题是查询作为帖子请求传递。您的路线正在寻找:

/events/search

你定义的地方:

/events/search/:query

所以只需在路径末尾放下/:查询即可。查询在post上作为params传递。无需在路线中使用它。