Simple_format, (long) urls, and wrapping

I’m using simple_format to format and display posted content from
users. This content sometimes has urls in it.

The problem I’m having is that if the urls are long enough to wrap,
they do, but the url gets split with a
tag. Then, if the user
clicks on the link, only the first, non-wrapped part of the link gets
posted to the browser… and that’s an invalid link.

Is there a better way to handle this so that the link wraps, but keeps
its integrity?

Have you tried to use auto_link with simple_format? This, I would
think, would keep your link integrity, even if there was a line break.
Let me know if that works.

~Dustin T.

Yeah, that’s exactly what I do, as follows:

simple_format(sanitize(auto_link(content, :all, :target => ‘_blank’)))

And that’s what ends up with the break.

touching this again 'cause I never found a solution and it just came
back and bit me

this must be a common problem and perhaps I’ve missed something
obvious…?

any more thoughts/help out there?

OK… sorry for the thrash, but I’ve found a solution of sorts and
thought I’d share…


Turns out my problem was not with simple_format. Instead it was with
the TextHelper word_wrap call I’d been using. When it wraps long bits
of unbroken text (like a long url), it inserts
tags. That was
screwing things up.

So, I went in search of a solution that might wrap text using CSS.
Problem is that the solutions dont work cross-browser. But I found
something that works that doesnt use CSS (or Ruby code), it’s JS.

Check it out: http://www.hedgerwow.com/360/dhtml/css-word-break.html

I put the breakWord function in my application.js file, added another
function that looks for my DOM elements by class name (I name the
relevant ones ‘content’), and then call that function from the onLoad
event in my application layout. Works well, though others may have a
more elegant way to do this.

Hope that helps.