Language agnostic 在web应用程序中保持下拉列表干燥

Language agnostic 在web应用程序中保持下拉列表干燥,language-agnostic,drop-down-menu,dry,Language Agnostic,Drop Down Menu,Dry,我正在为各种表单等编写CMS,我发现我正在创建许多下拉列表。我真的不想用大量随机键/字符串值表来破坏我的数据库,只需要简单的下拉列表,其中有2-4个选项很少更改。您如何以负责任的方式管理此问题 这与语言无关,但如果有人有具体建议,我在Rails中工作。您有一个单独的下拉表,其中有一个额外的列来说明下拉列表的用途。。。使用where子句限制结果…在我的当前位置,我们实现了一个LookupCode表,其中包含一个代码组、代码和含义列,以及其他一些(如active)。这样,您就有了一个包含所有查找值的

我正在为各种表单等编写CMS,我发现我正在创建许多下拉列表。我真的不想用大量随机键/字符串值表来破坏我的数据库,只需要简单的下拉列表,其中有2-4个选项很少更改。您如何以负责任的方式管理此问题


这与语言无关,但如果有人有具体建议,我在Rails中工作。

您有一个单独的下拉表,其中有一个额外的列来说明下拉列表的用途。。。使用where子句限制结果…

在我的当前位置,我们实现了一个LookupCode表,其中包含一个代码组、代码和含义列,以及其他一些(如active)。这样,您就有了一个包含所有查找值的单一表,该表位于一个位置,您可以进行一些快速查找,以绑定到下拉列表。

我们将所有内容都放入数据库中的一个查找表中,其中一列映射到一个枚举,该枚举描述了它用于哪个查找(标题、国家等)

这使我们能够在查找下拉列表中添加“其他,请指定”选项的灵活性。我们制作了一个控件来封装这一点,并使用一个属性来根据具体情况打开或关闭此行为

如果最终用户选择“其他,请指定”,则会出现一个文本框,供他们输入自己的值。这将添加到查找表中,但标记为特殊项

该表包含一个标志,表示每个查找值的状态:活动、非活动、临时。只有活动的才会出现在下拉列表中;临时文件是通过“其他,请指定”选项创建的文件

管理员页面显示了临时值的使用频率,允许站点管理员将常见的流行值推广为通用值(即将其状态标志更改为活动)


这对你的应用来说可能有些过分,但对我们的应用来说效果非常好:该应用基本上完全是针对特定业务数据的CRUD操作。我们在整个网站上进行了数十次查找,客户希望能够自行维护这些查找。这给了他们完全的灵活性,没有我们的干预。

我非常喜欢这个想法。我不确定我是否会用一些非常详细的东西,但绝对是值得思考的。你是如何确保你的各种下拉列表指向正确的组的?您是否将组键硬编码到代码中?每次在页面上放置查找控件的实例时,我们都会设置该属性。在asp.net中以声明方式实现这一点非常容易;我没有在Ruby工作过。如果我们忘记设置它,控件将可怕地死去,因此我们在调试时会立即看到这一点。