Rails 5.2.1 UJS:javascript响应正在呈现文本而不是被执行

时间:2018-11-19 16:00:22

标签: javascript ruby-on-rails

我已经查看了该问题的许多其他答案,但对我来说都不起作用。

给出以下表格:

<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至少在某些情况下可以正常工作。最糟糕的是,此 USED 在我进行一些更改之前就可以工作,并且撤消这些更改并不能解决问题。

1 个答案:

答案 0 :(得分:0)

与我的许多问题一样,最近,这个令人尴尬:

嵌套的HTML表单:您不能拥有它们。

我的意思是,我知道这一点,但是问题中的表格是动态插入页面的,在这种情况下,它恰好属于表格。因此,它没有被UJS东西正确地吸引住,并且根本没有AJAX就发送了请求。

从好的方面来说,我现在比一般的人更了解UJS的工作原理。