2016-03-09 3 views
0

у меня есть форма поиска, но при нажатии на кнопку поиска, он не получает правильный URL: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 
.... 

кого-то есть хорошая идея? Заранее спасибо!

+0

Первый аргумент должен быть объектом, а затем определить свой собственный url – LHH

ответ

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

+0

Спасибо, это работает, но почему 'search' является объектом? – pangpang

+0

, если у вас нет объекта, подобного @search, тогда вы можете определить ': search' как первый аргумент символа. – LHH

+0

Спасибо за помощь! – pangpang

1

form_for ожидает, что первый аргумент является ресурсом, например @user. Это хорошо работает для спокойных маршрутов. Но поскольку это настраиваемый маршрут, вместо этого вы должны использовать form_tag.

Попробуйте обновить вашу форму логики на следующее:

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

Обратитесь к FormTagHelper#form_tag для получения дополнительной информации.

+0

Это хороший ответ! Большое спасибо! – pangpang

Смежные вопросы