Rails and CKEditor

Has anyone used CKEditor successfully with Rails? Specifically the
file/image upload?

I have the ckeditor working rather well but this aspect. I have the
upload tab on the popup and it allows the user to browse their computer
for an image and then click "Send to Server"

This is where it breaks. I get a routing error "No route matches
"/uploader/upload.php"" which actually makes sense b/c I can't find that
directory and/or file within the ckeditor files.

Do I need to download these separately?
                          or
Do I need to create this upload functionality myself?

Either way is fine by me but I just don't want to spend time working on
one solution if there is an easier or already 'in-place' solution that
I'm missing.

Any help would be appreciated.

Hi Keith,
You have to create the upload functionality yourself and then specify
the upload URL in the CKEditor configuration, like this:
filebrowserUploadUrl: "/gallery/upload"

Also you'll need to create the file browser yourself, and specify it
with the next configuration option:
filebrowserImageBrowseUrl: "/gallery"

Note that the "gallery" and "/gallery/upload" route names are the ones
I've chosen for my app, you can choose whatever you want as long as
they are valid routes for your app.

Hope it helps.

Cheers!

Has anyone used CKEditor successfully with Rails? Specifically the
file/image upload?

I use elfinder (version 1) with CKEditor and it works great. Follow the instructions on the elfinder site to integrate the front end and use the el_finder gem on the backend...

https://github.com/phallstrom/el_finder

-philip

Nice!
I didn't know this. Looks good.

Thanks for the replies!

I looked into the el_finder, but this is using jQuery and I'm building
this out in prototype. If I use that gem would that add any real bloat
to my application? I have always been weary of having too many calls to
javascript files and having two libraries loading seems wrongish...

I tried creating a route for uploading. I simply created a 'match
"/upload" => controller#action, :via => :post' But this is causing all
kinds of issues with Devise gem that is handling my login/out. Every
time I click 'send to server' it logs me out of my application and
doesn't even hit my :action that it is supposed to be getting to.

Any thoughts? Again thank you both for helping me thus far.

Thanks for the replies!

I looked into the el_finder, but this is using jQuery and I'm building
this out in prototype. If I use that gem would that add any real bloat
to my application? I have always been weary of having too many calls to
javascript files and having two libraries loading seems wrongish...

I don't think you would add any bloat, since you can use non-conflict
mode, but you will have to load both frameworks which is overkill and
kinda wrong.

I tried creating a route for uploading. I simply created a 'match
"/upload" => controller#action, :via => :post' But this is causing all
kinds of issues with Devise gem that is handling my login/out. Every
time I click 'send to server' it logs me out of my application and
doesn't even hit my :action that it is supposed to be getting to.

Any thoughts? Again thank you both for helping me thus far.

This might be because of a before_filter that Devise must be adding to
require authentication.
I don't use Devise, so I can't tell for sure, it's just a thought.

Hope it helps.

Leonardo,

That's exactly what it is. Thanks!

I commented out the before_filter that handles devises authentication
and the app was able to find the route as it should.

I read this somewhere too, I believe with authlogic or maybe it was
devise. Any ideas on a work around? I'm concerned about allowing this
action go without user authentication for security reasons...

Thanks again

Ok, I found this post:
http://stackoverflow.com/questions/6128495/devise-being-logged-out-on-post-to-different-route

and it showed me that the 'protect_from_forgery' method is the culprit
here and commenting it out makes this functionality work how it is
supposed to. Again it makes me nervous to leave this method out.

Does anyone know of a way to fix this or work around the
'protect_from_forgery' for just this :upload action?

I'm not really finding anything on fixing this issue via google

Leonardo,

That's exactly what it is. Thanks!

I commented out the before_filter that handles devises authentication
and the app was able to find the route as it should.

I read this somewhere too, I believe with authlogic or maybe it was
devise. Any ideas on a work around? I'm concerned about allowing this
action go without user authentication for security reasons...

Hey, sorry for the late on this.
You should use a skip_before_filter, :only => :upload in your controller.
Check guides.rubyonrails.com, if you're in doubt with the syntax.

Hope it helps.

Cheers.