来自form_for的控制器中的Ajax javascript响应以纯文本形式呈现

Ajax javascript response in controller from form_for is rendered with the javascript as plain text

本文关键字:文本 响应 javascript form for 控制器 Ajax 来自      更新时间:2023-09-26

当我试图编辑用户时,我试图获得javascript响应。我通过在提交表单时发出ajax调用来实现这一点。表单提交后呈现的页面是javascript响应的纯文本。因此,ajax无法正常工作,javascript被呈现为文本。

Slim html:

= form_for @user, html: { multipart: true }, authenticity_token: true, :format => :js, remote: true do |form|
      = form.label :avatar
      = form.file_field :avatar
      = form.submit "add an avatar!"

用户控制器中的更新方法:

 def update
     @user = User.find(params[:id])
     logger.debug request.format
     respond_to do |format|
          format.js { render layout: false, content_type: 'text/javascript' }
     end
  end

以纯文本显示的javascript响应:

alert("hello");

不幸的是,没有简单通用的方法可以通过ajax发送多部分表单。但是你仍然可以使用这个宝石来解决问题https://github.com/JangoSteve/remotipart.