Rails 3.1 ckeditor - ruby-on-rails

So I just tried to install ckeditor in rails, however it doesn't look like its working.
Here is what I did
added these lines to my gemfile
gem "ckeditor", "~> 3.6.0"
gem "paperclip"
Then bundled installed and ran
rails generate ckeditor:install
rails generate ckeditor:models --orm=active_record
Added this file tom config/application.rb
config.autoload_paths += %W(#{config.root}/app/models/ckeditor)
And then I tried out this code:
<%= javascript_include_tag :ckeditor %>
cktext_area_tag("test_area", "Ckeditor is the best")
cktext_area_tag("content", "Ckeditor", :input_html => {:cols => 10, :rows => 20}, :toolbar => 'Easy')
However, all I am getting is two textareas that do not have any editing ability. They look like normal textareas and all I can do is erase and add text.
What am I doing wrong?

This works like a charm, just tested it on rails 3.1.rc6. Also be cautious of the gem you are using. As of the moment of this post, the oficial gem was not working and was waiting for a pull request, so be sure to use fxposter's version of the gem in your gemfile.
https://github.com/fxposter/rails_3_1_with_ckeditor_and_carrierwave

I had the same setup as you and the same issue. With jalagrange's example app as a comparison to mine, I eventually found the issue to be in development.rb. I had to remove this line:
config.assets.debug = true
It worked for me with after that.

I had a similar issue when I was setting it up a while ago. I gave up on the gem eventually. The problem was getting ckeditor to behave in the asset pipeline, but I had mixed results depending on the browser (of course IE was the problem). Here is what worked for me:
Download ckeditor package from their site and drop in to public/ckeditor.
Then, directly include the javascript files.
<%= javascript_include_tag "/ckeditor/ckeditor" %>
<%= javascript_include_tag "/ckeditor/adapters/jquery" %>
Not exactly elegant, but it worked and haven't had to touch it since.

STEP 1: Add gem 'paperclip' and gem "ckeditor" in your gemfile.
STEP 2: Bundle Install.
STEP 3: rails generate ckeditor:install --orm=active_record --backend=paperclip
STEP 4: Place config.autoload_paths += %W(#{config.root}/app/models/ckeditor) in application.rb
STEP 5: Place mount Ckeditor::Engine => "/ckeditor" if not present already and run db:migrate
STEP 6: Open application.html.erb and place this <%= javascript_include_tag 'ckeditor/ckeditor.js' %> in header.
STEP 7: Place this in footer(above the body tag) in application.html.erb
<script type="text/javascript">$(document).ready(function() {
if ($('textarea').length > 0) {
var data = $('textarea');
$.each(data, function(i) {
CKEDITOR.replace(data[i].id);
});
}
});</script>
STEP 8: Restart the WEBrick SERVER.
That's it.

Related

ActiveAdmin can't find jquery.ui.datepicker

ActionView::Template::Error (couldn't find file 'jquery.ui.datepicker'
(in /home/raimat/webapps/keita/gems/bundler/gems/active_admin-2ae0a9e09bf9/app/assets/javascripts/active_admin/base.js.coffee:2)):
7: <%= stylesheet_link_tag params[:controller] %>
8: <link rel='stylesheet' href='/assets/typicons.min.css'/>
9:
10: <%= javascript_include_tag "application" %>
11: <%= javascript_include_tag 'ckeditor/ckeditor.js' %>
12:
13:
app/views/layouts/application.html.erb:10:in `_app_views_layouts_application_html_erb__42414357695359850_50936120'
app/controllers/home_controller.rb:15:in `index'
This only occurs when I try to deploy my app at webfaction (Both Production and development). I've tried it on two different local machines, and it goes as smooth as it should.
Edit: I removed Gemfile.lock on my local machine, and now I get this error there as well.
Tried the solutions found at rails active admin deployment : couldn't find file 'jquery-ui' but I still stand with the bug.
I use Rails 4.0.2
ActiveAdmin at master branch
I need jquery-rails > ~> 3.1.0 for another gem
Tried adding gem jquery-rails-ui, but still nothing..
Ideas?
I was running into the same problem. Noticed there was an upgrade to jquery-ui-rails a couple of days ago (July 3, 2014) so I downgraded to the previous version and that fixed my problems
In gemfile
gem 'jquery-ui-rails', '~> 4.2.1'
In application.js
//= require jquery-ui

Bootstrap Integration gem with Rails 4

I recently attended a hackathon, and we a made a web application in rails. We were all new to rails and were not aware of the bootstrap gem, and thus we hard coded the bootstrap style sheet in the assets folder.
In an effort to learn Rails, further, I'm continuing with the app. I have deleted the .css file, and added the gem to my Gemfile. I've ran bundle install and imported the files using the '#import' command in another CSS file.
When I run the rails server and navigate to my homepage, I get an error:
Sass::SyntaxError in Pages#rootpage
Showing C:/Users/User/Documents/SoapBox/app/views/layouts/application.html.erb where line #6 raised:
File to import not found or unreadable: bootstrap.
Load paths:
C:/Users/Soham/Documents/SoapBox/app/assets/images
C:/Users/Soham/Documents/SoapBox/app/assets/javascripts
C:/Users/Soham/Documents/SoapBox/app/assets/stylesheets
C:/Users/Soham/Documents/SoapBox/vendor/assets/javascripts
C:/Users/Soham/Documents/SoapBox/vendor/assets/stylesheets
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/turbolinks-1.3.0/lib/assets/javascripts
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/jquery-rails-3.0.4/vendor/assets/javascripts
(in C:/Users/Soham/Documents/SoapBox/app/assets/stylesheets/styles.css.scss:2)
`File to import not found or unreadable: bootstrap`.
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href='http://fonts.googleapis.com/css?family=Oswald:700,300' rel='stylesheet' type='text/css'>
<%= favicon_link_tag "favicon.png", :type => "image/png", :rel => "icon" %>
<%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %>
<%= javascript_include_tag "application", "data-turbolinks-track" => true %>
<%= csrf_meta_tags %>
I don't understand why the error is occurring.
Any help would be much appreciated!
Thanks!
SohamK
I recommend watching this: RailsCast
It mentions installing bootstrap like this:
#commandline
rails g bootstrap:install
If it doesn't work after that then try adding this to your less file.
#css NOT scss
#import "twitter/bootstrap/bootstrap";
Remember, that gem is in less. Importing less files into your scss file will break.
Update:
Since you are already using bootstrap-sass, it shouldn't have any problem. Can you paste the content of your styles.css.scss
Original:
You might need bootstrap-sass instead of bootstrap-rails gem if u want to import it to custom stylesheet.
#Gemfile
group :assets do
gem 'bootstrap-sass'
end
# app/assets/stylesheets/styles.css.scss
#import 'bootstrap';
#import 'bootstrap/responsive';
If you use want to use bootstrap-rails gem, you need to import inside sprocket in application.css
# Gemfile
group :assets do
gem 'bootstrap-rails'
end
# app/assets/stylesheets/application.css
/*
*= require bootstrap
*= require bootstrap/responsive
*/
Although this will not answer your question regarding your error, I much prefer to simply include the Bootstrap File in your 'Vendor' assets folder (in which it is common practice to put anything not coded by you in there like JQuery).
I prefer this because when Twitter-Bootstrap has an update, it is much simpler to just delete the files. Also, it is much nicer to see your CSS files in whatever editor you are using.
Add the extension .scss to application.css. If you deleted it, then add it again.
It should look like this:
#application.css.scss
/*
*
*= require_self
*= require_tree .
*/
#import "bootstrap";
...
It is VERY important to use that import in an .scss file. Otherwise it won't work.
Make sense?

Devise with Rails 4

The team behind Devise announced via blogpost
http://blog.plataformatec.com.br/2013/05/devise-and-rails-4/ that it was releasing a version that is compatible with Rails 4, calling it '3.0 rc'. In the same blog post, it also said it's releasing Devise 2.2.4.
I'm trying to build a Rails 4 app. when I did gem install Devise, it installed 2.2.4, not the version compatible with Rails 4.
Fetching: devise-2.2.4.gem (100%)
Which I assume from the comments in the blogpost about strong parameters is not going to be compatible with Rails 4.
I looked at Devise's github page but it's not obvious to me how to install the version compatible with Rails 4. Can you assist?
https://github.com/plataformatec/devise
Note, I tried
gem install devise --version 3.0.0.rc1
but it said
ERROR: Could not find a valid gem 'devise' (= 3.0.0.rc1) in any repository
ERROR: Possible alternatives: devise
Devise is now compatible with Rails 4 out of the box as of the time of this answer.
Our end goal is to have users be able to register, log in and log out of the website. We'll also create a small partial view letting us know if we're logged in or out.
Install the Devise gem.
Open up your Gemfile and install the Devise gem.
gem 'devise'
Then in your terminal run the bundle install command to install the gem.
$ bundle install
Run some Devise generators to set up the initial configurations.
Run this command from your terminal:
rails generate devise:install
This generator installs the initializer that configures all of Devise's available settings.
Generate your User model.
Next we need to generate our User model. I'm going to name it User but you can name it whatever you like, just replace User with Whatever.
rails generate devise User
rake db:migrate
Configure your default URL option for Development.rb
Inside of config/environments/development.rb, set the Action Mailer's default URL to localhost:
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
Make sure you have a root route declared in Routes.rb
You need to make sure that routes.rb has a default root route - if you don't have one, set it!
root to: 'home#index'
Create a partial view to see if we're logged in or not.
Inside of your views/layouts folder create a file named _user_widget.html.erb and copy this code in:
<% if user_signed_in? %>
<p>Welcome <%= current_user.email %></p>
<%= link_to 'Logged In [click to logout]', destroy_user_session_path, :method => :delete %>
<% else %>
<p>You are not signed in.</p>
<%= link_to 'Login', new_user_session_path %>
<% end %>
And invoke it within your layout (views/layouts/application.html.erb):
<!DOCTYPE html>
<html>
<head>
<title>FacebookAuthTest</title>
<%= stylesheet_link_tag "application", media: "all" %>
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>
</head>
<body>
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
<%= yield %>
<%= render 'layouts/user_widget' %>
</body>
</html>
Make sure you stop and restart the server otherwise you will find all sorts of nasty bugs! It's always best to restart your local
server when you update your gemfile or change anything in the
environment configuration file.
With all this in place, you should be able to sign up, log in and log out from your very own Rails website.
If you have any questions feel free to leave a comment below and I'll try to help.
UPDATE SEPT 17th, 2013: The master branch is now compatible with Rails 4. No need to search for another version.
Looking at the github repo, it looks like you want version 3.0.0.rc (no 1). So you'll want
gem install devise --version "3.0.0.rc"
or, in your gemfile:
gem 'devise', '3.0.0.rc'
This installed it
gem install devise --pre
or
devise-3.0.0.rc.gem
At this point this version of the gem is what you would want to use
gem 'devise', '3.0.0'
gem 'devise', github: 'plataformatec/devise', branch: 'rails4'
Now that the 3.0 version is stable, you can just do:
gem install devise
or in your Gemfile:
gem 'devise'

Rails 3.1 issue with javascript_include_tag in application.html.erb

I've created a clean and simple Rails 3.1 application called demo1. It contains two controllers - hello and goodbye. I get the following error when I try to load http://localhost:3000/say/hello:
ActionView::Template::Error (
(in /home/me/dev/ruby/demo1/app/assets/javascripts/say.js.coffee)):
3: <head>
4: <title>Demo1</title>
5: <%= stylesheet_link_tag "application" %>
6: <%= javascript_include_tag "application" %>
7: <%= csrf_meta_tags %>
8: </head>
9: <body>
app/views/layouts/application.html.erb:6:in
`_app_views_layouts_application_html_erb___558576499_89622220'
The problematic line of application.html.erb is:
<%= javascript_include_tag "application" %>
When I created the application using Rails 3.0 this particular line was:
<%= javascript_include_tag :defaults %>
And this worked fine. In fact, when I change the application.html.erb to use :defaults everything works, but I want to use the new features of Rails 3.1.
I can't seem to turn up anything on Google around this, I guess because Rails 3.1 has just been released.
By the way, I'm following the first chapter in the Agile Web Development with Rails (4th edition) Updated for Rails 3.1 book.
Some environmental info that may help in answering this question:
$ cat /etc/issue
Ubuntu 10.04.2 LTS \n \l
$ ruby -v
ruby 1.9.2p290 (2011-07-09 revision 32553) [i686-linux]
$ rails -v
Rails 3.1.0
Contents of the say.js.coffee file:
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/
Ok, I've figured out what the issue was, and so I'll answer my own question.
The problem was the app/assets/javascripts/application.js file contained commented out code. However, one of the commented out lines was as follows:
//= require_tree .
When I delete this line everything works fine.
Hope this helps. If someone can provide some insight as to why the underscore was causing the issue that would be great.
I just ran into this issue when starting a new RoR 3.2.1 app. The problem is that you are missing a JS runtime, which is because the line
# gem 'therubyracer'
in your Gemfile has that # in front of it. God only knows why they ship Rails with that line commented, because any tutorial that uses generate scaffold or similar will result in the asset compilation process tripping up over the generated coffeescript file.
The solution is to uncomment that line. Installing another JS runtime may also solve the problem. See e.g. ExecJS and could not find a JavaScript runtime.
The official ruby on rails guide says:
Compiling CoffeeScript to JavaScript requires a JavaScript runtime and the absence of a runtime will give you an execjs error. Usually Mac OS X and Windows come with a JavaScript runtime installed. Rails adds the therubyracer gem to Gemfile in a commented line for new apps and you can uncomment if you need it. therubyrhino is the recommended runtime for JRuby users and is added by default to Gemfile in apps generated under JRuby. You can investigate about all the supported runtimes at ExecJS.
Simply delete the 2 lines from application.js
//= require turbolinks
//= require_tree
I had the same problem running rails 3.1.1
Once I reinstated the following code in my Gemfile, my issue disappeared:
group :assets do
gem 'sass-rails', '~> 3.1.4'
gem 'coffee-rails', '~> 3.1.1'
gem 'uglifier', '>= 1.0.3'
end
gem 'jquery-rails'
This was placed in my Gemfile when initially setting up the project, i.e. using "rails new myapp".
Note that the in my template file I include:
<%= javascript_include_tag :application %>
Hope that helps
If you're on Windows and you used RailsInstaller to get your development going, you need to use that .bat file included with RailsInstaller to run your server. Also you can't use any CMD hook like conemu to start the server, unfortunately.
For the benefit of future Googlers, I went down a rabbit hole trying to install therubyracer until I stumbled upon this related post:
ExecJS::RuntimeError in rails 3.2.8 engine with javascript_include_tag
The link mentioned explains that ExecJS is configured incorrectly for Windows 8 out-of-the-box. In particular, the workaround described by pottsk did the trick for me.
https://github.com/sstephenson/execjs/issues/81#issuecomment-9892952
It involves changing the way that the cscript executable is run by ExecJS in %rubyinstall%\gems\2.0.0\gems\execjs-2.0.1\lib\execjs\runtimes.rb:
# JScript = ExternalRuntime.new(
# :name => "JScript",
# :command => "cscript //E:jscript //Nologo //U",
# :runner_path => ExecJS.root + "/support/jscript_runner.js",
# :encoding => 'UTF-16LE' # CScript with //U returns UTF-16LE
# )
JScript = ExternalRuntime.new(
:name => "JScript",
:command => "cscript //E:jscript //Nologo",
:runner_path => ExecJS.root + "/support/jscript_runner.js",
:encoding => 'UTF-8' # CScript with //U returns UTF-16LE
)
It goes without saying that this is not a permanent solution but it does get me up and running until the patch is incorporated.
Removing //= require_tree will just stop your javascript files from being loaded into rails. It will probably stop the error, but probably not what you'd like.
However, in my case, I had some .js.coffee files with incorrect indenting. Once I fixed this (by deleting them), it worked.
Another thing you can try which worked for me is to add the json (and perhaps also the yajl-ruby) gem to your Gemfile. I don't really understand why they weren't already installed before because:
rails depends on actionpack
which depends on sprockets
which depends on json and tilt
and tilt depends on yajl-ruby
Yet, somehow, it seems many of the dependent gems were not installed!?
In case of using linux(Ubuntu linux like mine), install javascript runtime. The best is issue the below command to install,
apt-get install nodejs
or else, for each and every new creation of rails project, add
gem 'therubyracer' to your gemfile and run bundle install
devise_scope :user do
get 'sign_out', :to => 'devise/sessions#destroy', :as => :destroy_user_session
end
If your routes.rb has this above line just delete it and run. This is what corrected my problem.
modify generator file (application.html.erb.tt) as the following:
<%= javascript_include_tag "application", "data-turbolinks-track" true %>
<%= javascript_include_tag :default, "data-turbolinks-track" true %>
Just REMOVE the following line (Line no. 6) from generator file (application.html.erb) :
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
please update me if there is any drawback to remove this line
Thanks
I have this issue in Rails 4, and if I switch it to 'defaults' rather than 'application', it works, just as the OP says. But this is in an external Gem that I'd rather not edit. I have found that if I force my Gemfile to use version 1.8.0 of coffee-script-source, do a bundle install, and start the server, then everything works fine.
Adding the gem 'therubyracer' fixed the issue.
I was getting the error only after adding external js file through <%= javascript_include_tag %>

Trying to call methods from gems in a view, getting "no such file" error

I have just installed a base installation of rails and have edited the main page to view some basic html and a link to create a new blog post via ruby in the corresponding 'erb' file. I am trying to add some additional ruby commands on this same page via <%= %> tags.
<h1>Hello, Rails!</h1> <%= link_to "My Blog", posts_path %>
<p>
<%= require 'rubygems' %>
<%= require 'simplegeo' %>
<%= SimpleGeo::Client.set_credentials('token', 'secret') %>
<%= a = SimpleGeo::Client.get_context(coordinates,coordinates); a %>
</p>
When I load this page , I get the following error: no such file to load -- simplegeo
Can someone point me in the right direction? Many thanks!
In Rails 3, you need to add this gem to your "Gemfile" .. follow this: http://gembundler.com/rails3.html
Remove this completely.. Never do this in your views
<%= require 'rubygems' %>
<%= require 'simplegeo' %>
Once you restart your rails server, if you added "simplegeo" to your gemfile, it'll be auto-required.
Move this to your controller to start
SimpleGeo::Client.set_credentials('token', 'secret')
#simple_geo_client = SimpleGeo::Client.get_context(coordinates,coordinates)
Then in your view, you can access any variable that starts with #
To get started in Rails, check out http://railsforzombies.org/
In rails 3.x, you use Bundler to specify gems. No need to require, especially in views.
Correct way is:
Open Gemfile
Set/List required gems inside using format:
source :rubygems
gem "simplegeo"
gem "some_other_gem"
Run bundle install (or just bundle) command in console.
now restart your server and gems are auto required.
Check out Rails guide on how to start.
Most probably you did not install Simplegeo gem properly, or did not attach it correctly in you IDE.

Resources