David Beckwith
2008-Apr-07 16:41 UTC
Ajax.inPlaceEditor is not updating when it''s a textarea and there is a newline character
Did anybody experience this problem?
In Firefox using Ajax.inPlaceEditor, after saving, the innerHTML of
the target div is not updating when you have multiple lines of input
(rows >= 2) and there is a newline character in the text content. It
works fine if you don''t have a "\n" in the text content. It
just says
"Saving . . . . " and doesn''t update.
I''m passing { rows: 2 } in as an option to Ajax.inPlaceEditor, and
updating my div with $(''box_text'').update(''here is
some text'');
Is there a more robust way to update the value in the <div>
innerHTML ? Thank you!
The relevant code is pasted below:
# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The column is a text data type in the database. (the column also
happens to be called "text")
I wrote a helper method called "ipe" to make these DRYer:
<div class="text" id="text_<%= @box.id
%>"><%= ipe @box, :text,
{:rows => 3} %></div>
This is my helper method generating the call:
def ipe instance, property, options={}
class_name = instance.class.to_s.downcase # in lower case
path = instance.class.to_s.pluralize.downcase
dom_id = "#{class_name}_#{property}"
value = instance.send(property)
option_text = ""
option_text << "rows: #{options[:rows]}," if options[:rows]
return %(
<div id=''#{dom_id}''>#{value}</div>
<script type=\"text/javascript\">
new Ajax.InPlaceEditor($(''#{dom_id}''),
''/#{path}/'' +
#{instance.id}, {
#{option_text}
htmlResponse: false,
ajaxOptions: {method: ''put''},
callback: function(form, value) {
return ''authenticity_token='' +
''#{form_authenticity_token}'' +
''&#{class_name}[#{property}]='' + escape(value) }
});
</script>
) # return
end # ipe
Here is my rjs file:
Box.content_columns.each do |c|
property = c.name
page <<
"$(''box_#{property}'').update(''#{@box.send(property)}'');"
if
params[:box][property.to_sym]
end
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Spinoffs" group.
To post to this group, send email to
rubyonrails-spinoffs-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-spinoffs-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-spinoffs?hl=en
-~----------~----~----~----~------~----~------~--~---
David Beckwith
2008-Apr-12 00:59 UTC
Re: Ajax.inPlaceEditor is not updating when it''s a textarea and there is a newline character
In case anybody wants to know, I encoded \n to <br> in the database, then when I send it back to the browser from the server, there are no \n characters. Then upon displaying it in the textarea, I convert all the <br> to \n. It seems to work well doing it like this. On Apr 7, 9:41 am, David Beckwith <dbitsoluti...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Did anybody experience this problem? > > In Firefox using Ajax.inPlaceEditor, after saving, the innerHTML of > the target div is not updating when you have multiple lines of input > (rows >= 2) and there is a newline character in the text content. It > works fine if you don''t have a "\n" in the text content. It just says > "Saving . . . . " and doesn''t update. > > I''m passing { rows: 2 } in as an option to Ajax.inPlaceEditor, and > updating my div with $(''box_text'').update(''here is some text''); > > Is there a more robust way to update the value in the <div> > innerHTML ? Thank you! > > The relevant code is pasted below: > > # XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX > > The column is a text data type in the database. (the column also > happens to be called "text") > I wrote a helper method called "ipe" to make these DRYer: > > <div class="text" id="text_<%= @box.id %>"><%= ipe @box, :text, > {:rows => 3} %></div> > > This is my helper method generating the call: > > def ipe instance, property, options={} > class_name = instance.class.to_s.downcase # in lower case > path = instance.class.to_s.pluralize.downcase > dom_id = "#{class_name}_#{property}" > value = instance.send(property) > option_text = "" > option_text << "rows: #{options[:rows]}," if options[:rows] > return %( > <div id=''#{dom_id}''>#{value}</div> > <script type=\"text/javascript\"> > new Ajax.InPlaceEditor($(''#{dom_id}''), ''/#{path}/'' + > #{instance.id}, { > #{option_text} > htmlResponse: false, > ajaxOptions: {method: ''put''}, > callback: function(form, value) { > return ''authenticity_token='' + ''#{form_authenticity_token}'' + > ''&#{class_name}[#{property}]='' + escape(value) } > }); > </script> > ) # return > > end # ipe > > Here is my rjs file: > > Box.content_columns.each do |c| > property = c.name > page << "$(''box_#{property}'').update(''...@box.send(property)}'');" if > params[:box][property.to_sym] > end--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Spinoffs" group. To post to this group, send email to rubyonrails-spinoffs-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-spinoffs-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs?hl=en -~----------~----~----~----~------~----~------~--~---