【问题标题】:.js.erb file is not executing although rendered in rails.js.erb 文件虽然在 Rails 中呈现,但未执行
【发布时间】:2015-07-03 12:41:46
【问题描述】:

我使用 rails 和 haml。我通过 Ajax 将数据发送到 rails 中的控制器:

$.ajax({
type: 'POST',
url: '/preview-image-upload',
processData: false,
contentType: false,
dataType : 'json',
data: data
});

然后我在控制器中执行数据并渲染js:

respond_to do |format|
 if @previewupload.save
  format.js
 end

对象已正​​确保存。 .js.erb 文件也根据服务器日志正确呈现:

Rendered path/preview_image_upload.js.erb (0.2ms)
Completed 200 OK in 603ms (Views: 8.1ms | ActiveRecord: 8.5ms)

出于测试原因,我在 preview_image_upload.js.erb 文件中添加了警报:

alert("Hello World");

但什么也没发生。看起来 .js.erb 文件已渲染但未执行。

从这里尝试了解决方案: js.erb not executing javascript but is processed rails

{ render layout: false, content_type: 'text/javascript' }

但这没有用。

【问题讨论】:

  • 检查 google/chrome 或 firefox 中的 net 选项卡以获取来自服务器的响应。
  • FF Developer 中可见的响应是“alert("Hello World");" - 没有引发错误。
  • 你能显示控制器动作的完整代码,视图吗?
  • 可能是js报错无声

标签: javascript ruby-on-rails


【解决方案1】:

从 jQuery AJAX 调用执行 Rails javascript 响应的数据类型是 script

【讨论】:

    【解决方案2】:

    我找到了解决方案。我只需删除 Ajax 请求中的 dataType 属性。让它看起来像这样:

    $.ajax({
    type: 'POST',
    url: '/preview-image-upload',
    processData: false,
    contentType: false,
    data: data
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-19
      • 2015-04-19
      • 1970-01-01
      • 2018-03-18
      • 1970-01-01
      • 2016-09-10
      • 1970-01-01
      • 2014-10-08
      相关资源
      最近更新 更多