Forum: Ruby How to save and display a newlinefeed with rails?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
anansi (Guest)
on 2007-05-02 14:45
(Received via mailing list)
Hi,
in my little rails application I've made a little database (create.sql)
like this:

drop table if exists entries;

create table entries (
          id              int         not null auto_increment,
          headline        varchar(100)  not null,
          news            text          not null,
          date_available datetime       not null,
          primary key (id)
         );

You see the news which is a text-type. Scaffold did a nice template with
these infos where I can type in these data and save it. After that I can
print these entries on the screen again with this *.rhtml:

<% for entry in @entries -%>
     <div class="blogentry">
         <h3><%= h(entry.headline) %></h3>
         <%= entry.news %> <br>
        <%= link_to 'read comments',
                     {:action => 'read_comments', :id => entry },
                     :class => 'read_comments' %><br/>
     </div>
     <div class="separator">&nbsp;</div>
<% end %>

But the problem is that I have now textformatting inside the entry.news
field. E.g. how can I insert <br> after each line in entry.news?

--
greets

                            (
                            )
                         (
                  /\  .-"""-.  /\
                 //\\/  ,,,  \//\\
                 |/\| ,;;;;;, |/\|
                 //\\\;-"""-;///\\
                //  \/   .   \/  \\
               (| ,-_| \ | / |_-, |)
                 //`__\.-.-./__`\\
                // /.-(() ())-.\ \\
               (\ |)   '---'   (| /)
                ` (|           |) `
          jgs     \)           (/


one must still have chaos in oneself to be able to give birth to a
dancing star
Alex Y. (Guest)
on 2007-05-02 14:50
(Received via mailing list)
anansi wrote:
<snip>
>         <%= entry.news %> <br>
<snip>
> But the problem is that I have now textformatting inside the entry.news
> field. E.g. how can I insert <br> after each line in entry.news?

<%= entry.news.split("\n").join("<br />") %>

or

<%= entry.news.gsub("\n", "<br />") %>
anansi (Guest)
on 2007-05-02 16:01
(Received via mailing list)
arghh thanks for your help, wokrs great :)

Alex Y. wrote:
> or
>
> <%= entry.news.gsub("\n", "<br />") %>
>


--
greets

                            (
                            )
                         (
                  /\  .-"""-.  /\
                 //\\/  ,,,  \//\\
                 |/\| ,;;;;;, |/\|
                 //\\\;-"""-;///\\
                //  \/   .   \/  \\
               (| ,-_| \ | / |_-, |)
                 //`__\.-.-./__`\\
                // /.-(() ())-.\ \\
               (\ |)   '---'   (| /)
                ` (|           |) `
          jgs     \)           (/


one must still have chaos in oneself to be able to give birth to a
dancing star
Mariusz Pękala (Guest)
on 2007-05-03 00:52
(Received via mailing list)
On 2007-05-02 21:00:05 +0900 (Wed, May), anansi wrote:
> >
> ><%= entry.news.split("\n").join("<br />") %>
> >
> >or
> >
> ><%= entry.news.gsub("\n", "<br />") %>

Just my 2 cents, but I strongly recommend:

<%= CGI::escapeHTML(entry.news).gsub("\n", "<br />") %>
<%= CGI::escapeHTML(entry.news).split("\n").join("<br />") %>

or

<%= h(entry.news).gsub("\n", "<br />") %>
<%= h(entry.news).split("\n").join("<br />") %>
This topic is locked and can not be replied to.