Rails 5.2.1 UJS: ответ javascript отображает текст, а не выполняется - PullRequest
0 голосов
/ 19 ноября 2018

Я посмотрел на многие другие ответы на этот вопрос, и ни один из них не работает для меня.

Учитывая эту форму:

<form data-remote="true" method="POST" accept-charset="UTF-8" action="/admin/audiences/search/industry.js">
  <div class="form-group">
    <input data-target="lookup.value" type="text" class="form-control" id="q" name="q" placeholder="Start typing to search...">
  </div>
</form>

Нажатие возврата после ввода в поле даетэта ошибка в консоли: Resource interpreted as Document but transferred with MIME type text/javascript, а правильный javascript отображается в браузере как текст, а не выполняется как-то с data-remote='true'.

Ответ сервера:

Started POST "/admin/audiences/search/industry.js" for 127.0.0.1 at 2018-11-19 10:29:04 -0500
Processing by Admin::AudiencesController#search as JS
  Parameters: {"q"=>"a", "type"=>"industry"}
  User Load (0.5ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2  [["id", 1], ["LIMIT", 1]]
  ↳ /Users/timsullivan/.rvm/gems/ruby-2.5.1/gems/activerecord-5.2.1/lib/active_record/log_subscriber.rb:98
   (36.6ms)  SELECT DISTINCT "salesforce"."account"."industry" FROM "salesforce"."account" WHERE (industry ilike '%a%')
  ↳ app/controllers/admin/audiences_controller.rb:89
  Rendering admin/audiences/search.js.erb
  Rendered admin/audiences/search.js.erb (0.5ms)
Completed 200 OK in 90ms (Views: 12.4ms | ActiveRecord: 37.1ms)

Обратите внимание, что сервер правильно распознает, что это запрос JS, и возвращает ответ JS, и даже браузер распознает, что он получает JS, он просто отображает его как документ.

Другие элементы UJS на странице работают нормально, именно этот, поэтому rails_ujs работает правильно, по крайней мере, иногда.Хуже всего то, что это ИСПОЛЬЗУЕТСЯ до того, как я внесу некоторые изменения, и отмена этих изменений не устранила проблему.

1 Ответ

0 голосов
/ 20 ноября 2018

Как и со многими из моих проблем, в последнее время эта проблема смущает:

Вложенные формы HTML: их не может быть.

Я имею в виду, я знал это, но форма вопроса вставляется в страницу динамически, и в этом случае она попадает в форму. Таким образом, UJS не подключается должным образом и отправляет запрос вообще без AJAX.

С другой стороны, теперь я знаю больше о том, как работает UJS, чем любой смертный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...