Pertanyaan Menggunakan simple_format dan html_safe pada saat yang sama di Rails


Dalam @post.content, Saya ingin

1.simple_format, sehingga konten akan memiliki garis yang berbeda daripada dalam satu baris tanpa istirahat

2.html_safe, sehingga pengguna dapat menempelkannya <embed> tautan video seperti youtube

Tidak masalah untuk digunakan <%= simple_format @post.content %> dan <%= @post.content.html_safe %> terpisah

Tetapi ketika saya menggunakannya bersama-sama: <%= simple_format @post.content.html_safe %>, html_safe tidak berfungsi, dan karenanya <embed> video tidak ditampilkan

Bisakah Anda memberi tahu saya bagaimana cara mengaktifkannya <embed>kode dan simple_format pada waktu bersamaan? atau apakah ada solusi lain untuk menampilkan @post.content? Terima kasih!!!


11
2018-04-23 11:55


asal


Jawaban:


Saya akan memberitahu simple_format untuk tidak membersihkan konten saya:

simple_format(@post.content, {}, :sanitize => false)

15
2018-04-23 12:04



Saya sedang mengerjakan masalah yang sama.

Saya mencoba memposting cuplikan kode di entri blog saya. Ini bekerja dengan sangat baik tetapi semua yang ada di dalam <> dilucuti. Apakah saya menunjukkan atau sesuatu yang lebih rumit di dalam <> menghilang. Saya telah menjalankan <% = simple_format (@ article.content), {}, membersihkan: kode palsu dan saya hampir mendapatkan apa yang saya inginkan.

Masalahnya adalah kode di dalam blok saya benar-benar mengubah tata letak halaman saya. :).

Saya akhirnya pergi dengan Redcarpet sebagai jawaban saya.

Ini sangat sederhana.

Tambahkan gem 'redcarpet' ke Gemfile Anda dan nyalakan kembali server Rails Anda.

Di application_helper.rb, letakkan kode berikut:

def markdown(content)
  @markdown ||= Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, space_after_headers: true, fenced_code_blocks: true)
  @markdown.render(content)
end    

Pilihan di sini dijelaskan dalam dokumentasi. Tapi, fenced_code_blocks: true adalah yang memungkinkan Anda untuk memasukkan kode dalam blok seperti yang dijelaskan.

Itu akan menghasilkan apa pun yang Anda ketikkan dan akan bekerja dengan penyematan Anda.

Kemudian, untuk membuatnya dalam kasus Anda, cukup cantumkan:

markdown (@ post.content) .html_safe

Harusnya baik untuk pergi. Anda juga memiliki opsi untuk mengindentasi empat ruang seperti di sini untuk memasukkan kode. Tampaknya lebih mudah untuk melakukan pemangkasan.


1
2018-05-09 18:21