Я работаю над простой функцией поиска, которая находится в виде панели пользователя (которая также имеет собственный контроллер панели мониторинга). Теперь функция поиска работает на одной модели, и после выполнения действия она должна перейти на страницу индекса этой конкретной модели. Однако страница индекса не отображается после поиска и остается на странице панели мониторинга, хотя в журнале говорится, что она перенаправляет на страницу индекса.
Вот лог:
Started GET "/detected_vehicles?utf8=%E2%9C%93&%3Aq%5Blocation_eq%5D=1&commit=Search" for 127.0.0.1 at 2019-05-02 10:33:08 +0800
Processing by DetectedVehiclesController#index as JS
Parameters: {"utf8"=>"✓", ":q"=>{"location_eq"=>"1"}, "commit"=>"Search"}
Rendering detected_vehicles/index.html.slim within layouts/application
Rendered shared/_flash.html.slim (3.1ms)
Rendered detected_vehicles/index.html.slim within layouts/application (80.9ms)
Rendered layouts/_navbar.html.slim (2.9ms)
Rendered layouts/_footer.html.slim (3.6ms)
Completed 200 OK in 326ms (Views: 271.7ms | ActiveRecord: 6.4ms)
Вот мой form_with
код:
= form_with url: detected_vehicles_path, method: :get, class: 'ui form' do |f|
.field
= select_tag(":q[location_eq]", options_from_collection_for_select(Camera.all, "id", "full_location"), class: 'form-control', id: 'detected_vehicle')
= f.submit 'Search', class: 'form-control'
Я попытался сделать то же самое, используя form_tag
, и он работает как положено. Вот мой код, используя form_tag
:
= form_tag detected_vehicles_path, method: :get, class: 'ui form' do
.field
= select_tag(":q[location_eq]", options_from_collection_for_select(Camera.all, "id", "full_location"), class: 'form-control', id: 'detected_vehicle')
= submit_tag 'Search', class: 'form-control'
Хотя я знаю, что могу согласиться с решением form_tag
прямо сейчас, я хотел бы выяснить, что не так с тем, как я сконструировал form_with
, поскольку он может вскоре стать стандартом для написания форм, начиная с form_tag
и form_for
технически мягко устарели, как я прочитал.