Ruby on Rails:让CKeditor上传图片的问题

时间:2010-08-03 16:43:57

标签: ruby-on-rails ckeditor

当我选择一个文件并单击“将其发送到服务器”

我收到错误:

ActionController::InvalidAuthenticityToken in MediasController#new_from_disk

Parameters:

{"upload"=>#<File:/var/folders/Fr/FrWbhcV1HdGpFgn7Lh7OhU+++TI/-Tmp-/RackMultipart20100802-4884-olu0e5-0>,
 "CKEditorFuncNum"=>"42",
 "langCode"=>"en",
 "CKEditor"=>"object_content_body"}

根据我的理解,ckeditor上传程序将我的ruby操作发送给文件,然后我处理它。所以我不需要与我的new_from_disk操作相关联的视图(当前没有做任何事情)。

以下是您上传/浏览已上传内容的文档。它没有一个帮助我。 http://docs.cksource.com/CKEditor_3.x/Developers_Guide/File_Browser_(Uploader)/Custom_File_Browser

任何人都有任何提示/指南吗?

1 个答案:

答案 0 :(得分:0)

默认情况下,Rails希望提交用户的真实性令牌 - 如果不是,则引发异常。这是为了防止CSRF(在Rails API上阅读更多内容)

每当您使用form_for时,Rails都会将此真实性标记添加为隐藏输入,以便随表单一起提交。

由于您未使用form_for(或其任何衍生产品),因此需要将此标记明确添加到您提交的参数中。您可以使用#{form_authenticity_token}访问令牌的值。你如何提交它将取决于CKeditor的API。

或者,您可以基于每个操作禁用身份验证令牌检查(推荐!),如下所示:

class MediasController < ApplicationController
  skip_before_filter :verify_authenticity_token, :only => [:new_from_disk]

  ...
end