Di pengontrol saya, saya punya:

def view_chart
  @legend = "First Data Set"
  @labels = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
  @data_set = [100, 300, 200, 500, 250, 175, 500, 100, 300, 200, 500, 250]
end

Dan menurut saya, saya memiliki:

javascript:
  var lineData = {
    labels: #{raw @labels.to_json},
    datasets: [{
      label: #{raw @legend},
      backgroundColor: 'rgba(114,102,186,0.2)',
      borderColor: 'rgba(114,102,186,1)',
      pointBorderColor: '#fff',
      data: #{raw @data_set.to_json}
    }

Ini tidak berfungsi, karena saya tidak melihat bagan, saat tampilan dirender. Namun, jika saya mengubah baris:

label: #{raw @legend},

Untuk:

label: "First Data Set",

Tampilan (dan bagan) ditampilkan dengan benar. Bagaimana cara meneruskan string teks, ke skrip javascript, di dalam template .slim?

0
EastsideDev 4 Mei 2020, 19:58

1 menjawab

Jawaban Terbaik

Anda harus mengutip output dari erb:

javascript:
  var lineData = {
    labels: #{raw @labels.to_json},
    datasets: [{
      label: '#{raw @legend}',
      backgroundColor: 'rgba(114,102,186,0.2)',
      borderColor: 'rgba(114,102,186,1)',
      pointBorderColor: '#fff',
      data: #{raw @data_set.to_json}
    }

Anda juga bisa membuat seluruh hash di Ruby dan mengubahnya menjadi JSON:

var lineData = <%=
   {
     labels: @labels,
     datasets: [{
       label: @labels,
       backgroundColor: 'rgba(114,102,186,0.2)',
       borderColor: 'rgba(114,102,186,1)',
       pointBorderColor: '#fff',
       data: @data_set
     }]
   }.to_json
%>
2
max 4 Mei 2020, 17:12