THẢO LUẬN

@tuanbacyen Theo như gợi ý của bạn thì mình đã đổi như sau

# edit.html.erb
<%= f.text_area :lyric, :value => @song.lyric.gsub!(%r~<br\s*\/?>~, "\n"), :required => true %>

Nhưng dù gì thì mình vẫn muốn đưa vào Helper nên để 1 code như sau:

# songs_helper.rb
module SongsHelper

    ......

    def br_to_newline(text)
        text.to_s.gsub!(%r~<br\s*\/?>~, "\n")
    end
end

Và ở view của mình

# edit.html.erb
<%= f.text_area :lyric, :value => br_to_newline(@song.lyric), :required => true %>

Đây là ý mình muốn làm. Vấn đề là chỗ từ :value ra là có vẻ chưa đúng lắm

Update: nó ra đúng như mình mong muốn, vấn đề là giờ làm thế nào để sau khi bấm edit, db của mình lưu vào là <br/>, không phải newline

0

@devil_boom_129 Mình chưa hiểu ý bạn lắm. Nhưng khi bạn lưu trong DB dạng \r\n thì mặc định khi edit hay làm gì đó với textarea thì nó tự động nhận xuống dọng. Đây là sự không đồng bộ của html khi xuống dòng phải dùng
. Nên nếu bạn đang lưu dạng <br> trong DB mà muốn hiển thị lên textarea mà có xuống dòng thì thực hiện một bước convert từ <br> xang \n bằng cách xet cho value của trường text đó thôi.🤔🤔

0
Avatar
đã bình luận cho bài viết
thg 3 5, 2019 6:07 SA

bạn có thể dùng Attribute PageSize hoặc MaxTop để limit nhé https://stackoverflow.com/questions/29165465/difference-between-pagesize-and-maxtop

0

cho em hỏi làm s a dừng ở train ở model 4 đựoc v ạ 😦(

0

@devil_boom_129 ừ thì anh đang hỏi là sao ko làm cách dễ, chú cứ ném string dạng \n ra rồi ở view làm css cho cái đoạn text đấy là white-space: pre thì nó cũng hiển thị dạng xuống dòng thôi mà. Edit thế nào đi nữa có dấu xuống dòng là trong db nó cũng lưu vào là \n mà

0

Mình đã trả lời bạn ở bên trên, bạn tham khảo lại nhé.

0

@dat.hedspi còn hiển thị ở show thì html_safe với simple_format thoải mái. helper là em dùng với form

0

@dat.hedspi thử tăng độ khó tí ạ. với lại nếu giờ lúc edit em xuống dòng thì lưu vào db cũng xuống dòng nốt ấy ạ. em thì thà chọn là dạng chuỗi loằng ngoằng hơn cả đoạn dài

0
thg 3 5, 2019 3:42 SA

Hay quá, trước mình cũng chủ yếu dùng for đơn giản, sau hay dùng for ... of chứ cũng chẳng mấy khi so sánh mấy cái này nó khác nhau như nào, thanks bro 👍

0

@devil_boom_129 sao ko lưu là \n rồi dùng css để mà đẩy nó hiển thị như em muốn, đỡ phải viết helper ko?

0

@dat.hedspi xong sau in ra cũng vẫn phải. chuyển đổi \n anh ơi. Quả này là em lấy ý tưởng từ cục dữ liệu truyện Kim Dung của ông thầy dạy Thực hành OOP

0

@devil_boom_129 sao chú không lưu vào db dạng 千本桜 夜ニ紛レ\n君ノ声モ届カナイヨ\n青藍(せいらん)の空 遥か彼方... thay vì 千本桜 夜ニ紛レ<br/>君ノ声モ届カナイヨ<br/>青藍(せいらん)の空 遥か彼方...

0

A cho em hỏi sửa trên trang xog sau đó làm sao để lưu lại những gì mình đã sửa ạ

+1

@tuanbacyen nhưng khi lưu vào database thì liệu chỗ \r\n có chuyển thành <br/> không? Bạn hiểu ý mình muốn xử lý chứ? Tức là hiển thị trên web thì là bth nhưng db là 1 chuỗi với xuống dòng thay bằng <br/>

0

@devil_boom_129 Ảnh trên là bạn đã biến nó thành html thì <br> là xuống dòng. Nhưng nếu muốn edit trong textarea thì bạn phải dùng \r\n chứ ??

0

Lúc hiển thị đoạn lyrics trên textarea thì mình làm như vậy

<%= form_for a_testing_route do |f| %>
   <%= f.text_area :test, value: "千本桜 夜ニ紛レ<br/>君ノ声モ届カナイヨ<br/>青藍(せいらん)".gsub!(%r~<br\s*\/?>~, "\n") %>
<% end %>

Sau đó với giá trị param truyền lên, thì đoạn text sẽ chứa các kí tự "\n" sẽ được xử lý chuyển về thẻ "br" trên server

Screenshot from 2019-03-05 09-39-53.png

Không biết làm vầy có đúng với ý bạn không 😕

+1

ý mình ko phải là đổi, mà là dùng mấy hàm trên để xử lý đoạn trong textarea cơ

0
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí