【问题标题】:How to set config or admin bar for an app from the app itself如何从应用程序本身为应用程序设置配置或管理栏
【发布时间】:2019-01-19 08:15:28
【问题描述】:

我有一个使用 rails 制作并部署在 heroku 上的应用程序。假设背景图像有 2 个选项——“陆地”和“海洋”。

所以我们可以将其定义为 heroku 级别的环境配置,或者我们可以在任何相关的控制器或辅助方法中定义它。但所有这些都是需要代码的“程序化”解决方案。即使登录 heroku 仪表板,管理员仍然需要离开应用程序本身,在单独的平台上登录,然后进行更改。

我想为管理员构建一个前端 GUI,以使用应用内的此变量更改背景图像。所以管理员永远不必离开应用程序或知道任何代码。

但是你是怎么做到的呢?顺便说一句,我意识到 heroku 有一个平台 API,但如果可能的话,我正在寻找另一种仅使用 rails 的解决方案,因为这个背景图像变量与我想保留在 heroku 上的实际配置变量的重要性不同(即,如果它是未设置 - 只是没有图像,而不是某种应用程序错误)

【问题讨论】:

  • 也许最简单的方法是使用模型。我不认为你可以写当地的苍蝇。
  • 这只是一个随机的数据集合。我可以有一个具有以下属性的模型和数据库:“键”和“值”——但这似乎有点过头了?

标签: ruby-on-rails heroku configuration config


【解决方案1】:

我实现这一点的方法是在某个模型中的某个地方进行设置,可能使用枚举。例如,我的模型可以称为设置。

class Setting < ApplicationRecord
  ...
  enum background-setting: { land: 0, sea: 1 }

然后在您的视图中,只需执行 if-else 并将视图设置为显示您想要的任何 div。

<% if @something.background-setting == "land" %>
  <div class="land-bg"></div>
<% else %>
  <div class="sea-bg"></div>
<% end %>

然后只需在您的 css 中指定 bg 图像。我想用我自己的工作中更实际的例子来解释会更容易,假设我有两种类型的用户(普通用户和发布者)。我可以使用数据库中的用户类型作为如何在两者之间显示不同背景的决定因素。所以我会打电话给@user.usertype@user.role,而不是@something.background-setting

【讨论】:

  • 我在寻找其他的唯一原因
  • 这对我来说不太理想的唯一原因是因为我有一堆这样的随机变量。其中一些取决于用户,而另一些则不取决于用户(即使它们可以由管理员设置)。我虽然有一个带有属性的专用模型来存储所有这些随机变量,但是以这种方式使用数据库表似乎很奇怪
猜你喜欢
  • 2017-03-01
  • 2018-05-14
  • 2013-01-18
  • 2022-11-09
  • 2010-11-15
  • 2013-09-27
  • 2017-11-04
  • 1970-01-01
  • 2021-10-31
相关资源
最近更新 更多