A few days ago I need to do spell checking for a rails project, but can’t find a ready-to-use plugin, so I implemented one.
I use the Aspell Lib to do the checking work, and ajax for editing.
First you need to install the Aspell and at lease one dictionary.
Mac: sudo port install aspell aspell-dict-en
Ubuntu: sudo apt-get install aspell libaspell-dev aspell-en
Arch: sudo pacman -S aspell aspell-en
And install the Aspell Ruby binding: raspell
sudo gem install raspell
Add a controller:
# app/controllers/spelling_controller.rb
class SpellingController << ApplicationController
def check
render :update do |page|
page.replace_html 'check-result', SpellingChecker.check_spell(params[:text])
end
end
end
Add a SpellingChecker Class to Lib # lib/spelling_checker.rb class SpellingChecker
def self.check_spell text
speller = Aspell.new("en_US")
speller.suggestion_mode = Aspell::NORMAL
wrongs = []
text.gsub(/[\w\']+/) do |word|
wrongs << word unless speller.check(word)
end
wrongs.uniq.each do |wrong|
text.sub!(wrong, "<span class='wrong'>#{wrong}</span>")
end
return text
end
end
in the view:
<%= f.text_area :description, :cols => 84, :rows => 10 %>
This is what it looks like:
That is it, quite sample, isn’t it? I would like to make a plugin for it, but no much time recently.
Thank yawl for pointing out my grammar misstake.