form_tag remote true не обрабатывается как рельсы json запроса 5 - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть форма в моем приложении, как эта

<%= form_tag(studios_path, method: :get, id: "studios_filter", remote: true) do %>

<% end %>

в моем application.js, у меня есть это

//= require jquery
//= require jquery_ujs
//= require rails-ujs
//= require jquery3
//= require turbolinks
//= require cocoon
//= require bootstrap
//= require_tree .

И то и другое, когда эта форма отправляется, я получаю еекак это

Started GET "/studios?utf8=%E2%9C%93&workout_category_id_list=&neighbourhood_list=Kuala+Lumpur&studio_id_list=" for 127.0.0.1 at 2018-12-28 12:42:12 +0800
Processing by StudiosController#index as HTML

Он обрабатывается как HTML, а не как JSON, поскольку remote: true уже добавлено.

Любые идеи относительно того, почему это происходит.На исходе

Ответы [ 3 ]

0 голосов
/ 28 декабря 2018

В соответствии с описанием, упомянутым в посте, кажется, что вы обеспокоены тем, что ожидаемый тип запроса ("json") не будет отправлен через контроллер.

Итак, он работает, как упомянуто в посте.измените код, как показано ниже:

<%= form_tag(studios_path, method: :get, id: "studios_filter", remote: true, :html => {:'data-type' => 'json'}) do %>

Это будет обрабатывать запрос как тип json.

0 голосов
/ 27 мая 2019

Я боролся с той же проблемой: Rails 5 обрабатывал мою remote: true форму, отправленную как HTML, независимо от того, что я сделал.Решением для меня было добавить

//= require jquery_ujs

к application.js.У ОП уже есть это в их файле выше, и именно это заставило меня попробовать.Не уверен, почему у ОП все еще возникают проблемы, но это решило это для меня ... так что, возможно, это решит это для других!

0 голосов
/ 28 декабря 2018

, так как вы используете method: :get в своей форме, все значения формы добавляются к studios_path, вы должны использовать этот метод как post и изменить метод в маршрутах для публикации.После этого вы начнете получать все поля формы в вашем контроллере как хеш

...