2017-02-02 8 views
0

(編集:私は一時的にテーブルに配置することでこれを修正しましたが、各行を賢明にスタイリングすることでクールなことをしたいと思います。テーブルで制限する)新しい行への参加:新しい行への表示

各文字列を独自の改行で表示するビューアページに文字列の配列を表示したいとします。私は( - 私はこれが私のユースケースのための正しい動きであることを確信している私の質問は、このデータ構造に関係しない)story_lineline_index、およびstory_idためtitleauthor_idの列とStoryモデル、および列を持つStoryLineモデルを持っています。

話がで開かれます
story_lines = params[:story_text].split("\n") 
    story_lines.each do |line| 
     @story_line = @story.story_lines.build 
     index = story_lines.index(line) 
     @story_line.line_index = index 
     @story_line.story_line = line 
     @story_line.save! 
    end 

:ストーリーのテキストは、テキストが入力されますときに、私は次のようにアクションを作成中のデータベースにそれらを解析し、新しい行に分割されている期間をせずに多くの行で構成されユーザーは、すべてのstory_linesコントローラのshowアクションに以下のコードを介して自分のインデックスの順に表示されます:@story_lines = @story.story_lines.order(:line_index).pluck(:story_line).join("\r\n")

次のように彼らは、ビューに表示されます

<%= @story_lines %>

しかし異なるなど、多くのために、私はこれを変えようとしました。私のコントローラとビューでは、新しい行に表示されません。彼らは正常に正しい順序で結合していますが、各文は次の文に対して右上がります。文の最後の単語と次の文の最初の単語の間に文字通りスペースはゼロです。

どのようにすればいいですか?になりますか?私は、テーブルの行に各改行を置くことによってそれを行うことができるとほぼ肯定的ですが、これは扱うことができるはずの安価な回避策のようです。<br />

答えて

1

必要なのはもっとです/より良いhtml :)

問題はレールではありませんが、実際には、これは、テキストの全体を汲み出したときにブラウザで起こることです。

改行をhtmlで表示する場合は、改行スペースを追加するものを使用する必要があります。

あなたは(BRは何の略か文字通りです)そのため<br>を使用することができたり、段落などを使用することができます。

<p> <!-- text should always be put inside a block-level object eg a paragraph --> 
    <% @story_lines.each do |line| %> 
    <%= line %><br> <!-- br example --> 
    <% end %> 
</p> 

<% @story_lines.each do |line| %> 
    <p><%= line %></p> <!-- p example --> 
<% end %> 

明らかにどちらか一方だけを選択するか、それが複製されます。 :)

+0

これは簡単だったので、 '\ n'はhtmlとは関係がないと思いますか? – michaelsking1993

+1

悲しいことにnah :) htmlファイルには良いキャリッジリターンが追加されています...しかし、それは私たち人間がソースコードを読むのではなく、ブラウザがエンドユーザに提示するとき –

関連する問題