【问题标题】:Passing a string, to a javascript script, inside a slim template, in Rails在 Rails 中,将字符串传递给 javascript 脚本,在苗条模板内
【发布时间】:2020-05-04 16:58:52
【问题描述】:

在我的控制器中,我有:

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】:

    你必须引用 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
    %>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-12
      • 2016-04-25
      • 2013-10-21
      • 2017-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-01
      相关资源
      最近更新 更多