jqgrid on Spree

jqgrid on Spree
Photo by Brooke Lark / Unsplash

Been a fan of jqgrid for quite some time, but wasn't looking forward to the struggle of getting it to work with Rails.

Thankfully, someones already done it for me:
http://www.2dconcept.com/jquery-grid-rails-plugin

It did take a little while to debug some things that were going wrong, though. Firebug was giving me the error: $.jgrid.formatter is undefined. After some digging around, I realized that no jqgrid locale files were being loaded.

By default, Spree has its i18n locale set to "en-US". 2dcJqgrid has a fancy method that sets the jqgrid locale to the same locale as your Rails app, but unfortunately that breaks down for any 'en-**' locales, because jqgrid only has the one 'en' locale file in its 'i18n' directory.

The simple fix is to change the file 2dc_jqgrid.rb (starting from line 11), from this:

def jqgrid_javascripts
locale = I18n.locale rescue :en
js = ''
...

to this:

def jqgrid_javascripts
locale = I18n.locale rescue :en
locale = :en if locale.to_s.start_with?("en")
js = ''
...