在Rails的苗条模板中将字符串传递到javascript脚本

问题描述 投票:0回答:1

在我的控制器中,我有:

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

我认为,我有:

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}
    }

呈现视图时,这不起作用,因为我看不到图表。但是,如果我更改行:

label: #{raw @legend},

至:

label: "First Data Set",

视图(和图表)正确呈现。如何在.slim模板内将文本字符串传递到javascript脚本?

javascript ruby-on-rails slim-lang
1个回答
2
投票

您必须引用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}
    }

您还可以只用ruby构造整个哈希并将其转换为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
%>
© www.soinside.com 2019 - 2024. All rights reserved.