Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails引擎编辑器图像上载导致异常_Ruby On Rails_Ckeditor - Fatal编程技术网

Ruby on rails rails引擎编辑器图像上载导致异常

Ruby on rails rails引擎编辑器图像上载导致异常,ruby-on-rails,ckeditor,Ruby On Rails,Ckeditor,我已经创建了一个包含CKEditor的引擎 在我的虚拟应用程序中,form.cktext_区域工作正常,呈现良好,但是当我尝试上载图像时,出现以下异常: ActionController::Ckeditor::PicturesController#创建中的InvalidAuthenticationToken 这是因为我在引擎中使用CKEditor,从而导致了一些身份验证/保护问题吗 谢谢您必须随请求一起发送csrf令牌,简单的方法是在每个ajax请求中添加csrf令牌: document.add

我已经创建了一个包含CKEditor的引擎

在我的虚拟应用程序中,form.cktext_区域工作正常,呈现良好,但是当我尝试上载图像时,出现以下异常:

ActionController::Ckeditor::PicturesController#创建中的InvalidAuthenticationToken

这是因为我在引擎中使用CKEditor,从而导致了一些身份验证/保护问题吗


谢谢

您必须随请求一起发送csrf令牌,简单的方法是在每个ajax请求中添加csrf令牌:

document.addEventListener('turbolinks:load', function () {
  var csrfToken = document.querySelector('meta[name="csrf-token"]').getAttribute('content')
  if (csrfToken) {
    var obj = XMLHttpRequest.prototype.open;
    XMLHttpRequest.prototype.open = function(){
      var res = obj.apply(this, arguments);
      this.setRequestHeader('X-CSRF-Token', csrfToken);
      return res;
    }
  }
})

这并不是一个真正的答案,但从我的引擎中删除CKEditor并重新添加它解决了这个问题(我想是我这边的一些安装/配置问题造成的)

虽然现在我面临着新的问题

NoMethodError (undefined method `gsub' for #<Pathname:/uploads/ckeditor/pictures/6/image.png> Did you mean? sub):
NoMethodError(未定义的方法'gsub'表示#你的意思是?sub):
。。。。如果我不能解决它,我会把它作为一个新问题发布

需要注意的是,在每个请求中添加csrf令牌,但在我的情况下没有任何区别


谢谢你的帮助和建议

这是一个有据可查的问题。我已经忘记了实际原因,但很可能是Rails堆栈的一部分工作不正常(我认为ImageMagick存在问题)。出于好奇,您是否在应用程序中使用ActiveStorage?嗨,Richard,我当然已经查找并尝试找到解决方案,但没有找到任何特定于我的问题的方法,并且不确定是否与引擎有关。我不是在使用ImageMagick,而是在使用rmagick和mini_magick宝石。。。不,我没有使用ActiveStorage。谢谢,Jon。如果您使用ckeditor gem,它包含javascript,用于在与ckeditor相关的每个请求上设置令牌。也许您的application.js文件中缺少一些javascript要求?谢谢但是,我目前没有使用TurboLink-这仍然是相同的问题吗?谢谢,如果您没有使用
turbolinks
,只需将
turbolinks:load
替换为
document:load
。问题与以前一样,您必须在请求时发送Authentity token,或者在rails应用程序中禁用CSRF保护。如果这没有帮助,欢迎您直接通过以下地址向我发送电子邮件:rpeck@frontlineutilities.co.uk. 我相信我以前已经解决了这个问题。嗨,伙计们,非常感谢迄今为止的帮助。我尝试将csrf令牌添加到每个请求中,但没有任何区别。当然,我昨晚从项目中删除了CKEdit并重新添加了它。这消除了这个问题,但引入了一个新的问题:现在,当上传一个图像时,我得到:“NoMethodError(未定义的方法`gsub'for#你是指?sub):”我假设是因为它的类型pathname而不是string?我还假设我在引擎中使用gem时遇到了这样的问题?