javascript - 在 Rails 中将字符串传递给 slim 模板内的 javascript 脚本

标签 javascript ruby-on-rails slim-lang

在我的 Controller 中,我有:

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

这不起作用,因为在渲染 View 时我看不到图表。但是,如果我更改行:

label: #{raw @legend},

至:

label: "First Data Set",

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

最佳答案

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

关于javascript - 在 Rails 中将字符串传递给 slim 模板内的 javascript 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61597585/

相关文章:

javascript - 一个接一个地加载脚本

ruby-on-rails - 更新 ImageMagick Ubuntu

传入参数的 JavaScript 倒计时

ruby-on-rails - 在 slim 的标签内嵌套文本

forms - Slim 中的文本区域 "Required field"

javascript - 如何更改嵌套对象数组中的键值javascript

javascript - 使用 Jquery 停止 Div 在页面刷新时滚动到顶部

ruby-on-rails - 如何在内联循环中包含 'next if' 条件

javascript - 尝试将 jquery $.when() & .done() 与 2x $.ajax 调用一起使用,但 did() 立即被调用

javascript - 无法在 Rails 5.0.0 中限制文件上传页面的重定向?