在 ruby gem dasing.io 中使用变量 - 仪表板 .erb 文件 - sinatra

Use a variables in ruby gem dasing.io - dashboard .erb files - sinatra

dashing.io 合作制作了一些很棒的仪表板。我知道 dashing 是用 ruby 和 sinatra 构建的,并使用特定目录中的 .erb 文件来制作仪表板。

我在使用 .erb 作业设置 dashing 或将信息输入仪表板时没有遇到任何问题。

我想做的是使用从我的一个仪表板 .erb 文件中的 uri 字符串传递的变量。仪表板目录还有一个看起来像模板的 layout.erb 文件,这就是我要放入的文件:

<% group = params["apps"] %>

然而,这在 sinatra 中给了我一个错误。理想情况下,我想添加一个 uri 参数来更改仪表板。所以我想在 sample.com:3030/mydashboard 处添加一个 uri 参数 sample.com:3030/mydashboard?apps=group1

<li data-row="1" data-col="1" data-sizex="1" data-sizey="1">
    <div data-id="<% group %>" data-view="List" </div>
</li>

并使用它来动态创建我的 erb 文件:

<li data-row="1" data-col="1" data-sizex="1" data-sizey="1">
    <div data-id="group1" data-view="List" </div>
</li>

我开始查看 sinatras 文档上的 erb 布局,但是这里有这么多不同的技术交织在一起,我不确定页面的构建顺序以及我需要在什么点或文件上进行这些更改.

更新:

我以为我取得了一些进展,我分叉了 gem 并更改了 app.rb 文件中的这一行:

get '/:dashboard/' do

get '/:dashboard/group/' do

这允许我在我的仪表板中使用它来获取 url 参数 <%= params[:group] %> 但这似乎破坏了仪表板。 Gridster 仍然显示小部件框但没有数据。这似乎打破了 view/[widget].html 的可解析性,因为我找不到资源。

这个问题的答案比试图干预破折号 gem 简单得多,并且非常接近我最初的尝试。感谢 fiverr 的 nauoa65

这是我在仪表板的 erb 中需要的,这个答案在 sample.erb 仪表板上。

<!-- The parameter should come from http://sample.com:3030/sample?apps=mytestparam -->
<% group = params[:apps] || "A default value if parameter is not set" %>

<!-- The equal sign outputs the content of variable to html -->
<%= group %>

这已在 issue in dashing repo 本身中解决。

正如您在代码中使用的那样,erb 文件可以从 sinatra 访问 params。所以很简单

<li data-row="1" data-col="1" data-sizex="1" data-sizey="1">
    <div data-id="<%= params[:app] %>" data-view="List" </div>
</li>

如果你用

击中它

sample.com:3030/mydashboard?apps=group1

data-id 将被视为 group1.

如果您喜欢冒险,您可以像 UPDATE 部分中那样配置自定义路线。

以下链接将为您提供足够的信息来做到这一点

How dashboards are accessed with routes
How routing works in sinatra

即使在 dashing 中融合了如此多的技术,您只需要查看 sinatra 中的路由以及它在 dashing 中的使用方式