在Rails 5中,在提交带有remote true的表单时,我希望控制器执行javascript,但所有javascript代码都呈现为文本

在Rails 5中,在提交带有remote true的表单时,我希望控制器执行javascript,但所有javascript代码都呈现为文本,javascript,ajax,ruby-on-rails-5,Javascript,Ajax,Ruby On Rails 5,以下是表单标签: <%= form_tag api_bill_upload_url(:format=> :js), :method=> 'post', :class=> 'form-horizontal', :id=> 'uploadForm', :multipart=> 'true', :remote=> 'true', :authenticity_token => true do%> <%end%&g

以下是表单标签:

<%= form_tag api_bill_upload_url(:format=> :js), :method=> 'post', :class=> 'form-horizontal', :id=> 'uploadForm',
               :multipart=> 'true', :remote=> 'true', :authenticity_token => true do%>
 <%end%>
以下是开发日志:

于2017-06-01 20:19:47+0530发布127.0.0.1版本的“/api/bill_upload.js” ApiController处理#bill_上传为JS 在2ms内完成200 OK(视图:0.5ms |活动记录:0.0ms)


编辑:看起来它与文件输入有关,当我上传文件时,脚本呈现为文本,但当我提交没有任何文件的表单时,脚本工作正常。

我在上传图像时也遇到类似问题。我想你可能是在用载波上传文件。我为这个问题添加了一个小补丁,我所做的只是在模态中使用表单,然后当我用模态上传图像时,它变成了js格式。是多部分导致了麻烦。我认为你可以使用一个模式或上传,你会得到作为Js的行动

以前,您无法通过remote=true发送多部分表单(文件上载)。显然,你还是不能。这就是像jqueryFileUpload这样的库的用武之地。
def bill_upload
 respond_to do |format|
  format.js {render js: "alert('Hello Rails');"}
  format.html {redirect_to root_url}
 end
end