form_for无法获得正确的路由

时间:2016-03-09 05:24:39

标签: ruby-on-rails ruby routes form-for

我有一个搜索表单,但是当我点击搜索按钮时,它没有获得正确的网址:

<%= form_for search_leads_path, method: :get do %>
   <%= text_field_tag :search, params[:search] %>
   <%= submit_tag "Search" %>
<% end %>

应该转到/leads/search,但它仍然在/leads

佣金路线:

....
      search_leads GET    /leads/search(.:format)                                 leads#search
             leads GET    /leads(.:format)                                        leads#index
....
谁有好主意?提前谢谢!

2 个答案:

答案 0 :(得分:2)

尝试这样做 -

第一个参数应该是对象,然后定义您的自定义URL。

<%= form_for(:search, url: search_leads_path, method: :get) do %>
  <%= text_field_tag :search, params[:search] %>
  <%= submit_tag "Search" %>
<% end %>

了解更多信息,请点击此处 http://apidock.com/rails/ActionView/Helpers/FormHelper/form_for

答案 1 :(得分:1)

form_for期望第一个参数是资源,例如@user。这适用于Restful路线。但由于这是一种自定义路线,您应该使用form_tag代替。

尝试将表单逻辑更新为以下内容:

<%= form_tag search_leads_path, method: :get do %>
   <%= text_field_tag :search, params[:search] %>
   <%= submit_tag "Search" %>
<% end %>

有关详细信息,请参阅FormTagHelper#form_tag