2017-02-02 1 views
0

(편집 : 임시로 테이블에 배치하여이 문제를 일시적으로 해결했지만 각 줄의 스타일을 현명하게 처리하고 싶습니다. 테이블로 제한해야 함)새 줄에 가입하기 : 새 줄에 표시하기

각 문자열을보기 페이지에 새 줄에 표시하고 싶습니다. 나는 title 및 및 story_line, line_indexstory_id에 대한 열을 가진 StoryLine 모델의 열을 가진 Story 모델을 가지고 있습니다. (제 질문은이 데이터 구조와 관련이 없습니다 - 저는 이것이 사용 사례에 적합한 것으로 확신합니다) . 이야기 텍스트는 새로운 라인에 분할 기간없이 많은 라인으로 구성되어 있기 때문에 텍스트가 입력됩니다 때 다음과 같이 내가 만드는 작업에 데이터베이스로 구문 분석 :

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 파일에서 멋진 캐리지 리턴을 추가합니다.하지만 이는 사용자가 소스 코드를 읽는 것입니다. 브라우저가 최종 사용자에게 제시 할 때 소스 코드를 읽을 때가 아닙니다. –

관련 문제