0

在我的 search_field_tag 中调用 search_path 时出现“无路由匹配”错误。搜索表单在我的标题中,这个想法只是为了能够对事件进行搜索。

这是 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 它完全按照我的预期工作。只需插入搜索表单并提交到 events#search。有什么帮助吗?谢谢!

4

1 回答 1

1

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

/events/search

如您所定义的:

/events/search/:query

因此,只需将 /:query 放在路线末尾即可。查询在 post 上作为参数传递。无需在路线中使用它。

于 2012-04-13T05:29:14.277 回答