Recently in a project that my brother and I were working on we ran across a problem with the Ajax.InPlaceEditor resulting in the number of rows for the editor being incorrectly determined. Here you can see the area before it’s used:
When I clicked on the edit icon I got:
Clearly not what I wanted. After fiddling with all the possible pieces and configurable parameters I finally traced it down to the source and realized there was a bug in the original code:
createEditField: function() { var text = (this.options.loadTextURL ? this.options.loadingText : this.getText()); if (1 >= this.options.rows && !/\r|\n/.test(this.getText())) {
Looking in the 2nd check of the if statement you see it’s checking for line breaks in “this.getText()”. It should have been checking the “text” variable it had just created above it. Changing that code to:
createEditField: function() { var text = (this.options.loadTextURL ? this.options.loadingText : this.getText()); if (1 >= this.options.rows && !/\r|\n/.test(text)) {
…fixed the problem! Now when I click my InPlaceEditor I get:
To share my fix I went to the Script.aculo.us page on Submitting Patches but unfortunately their instructions didn’t work right away for me.
Luckily Ryan Bates posted a Railscast called Contributing to Rails that had the right information I needed. Once I had successfully produced my diff file I submitted the patch to the Rails Trac.
Hooray! My first ever patch!