如何根据从下拉列表中选择的 CATEGORY 来控制 NEW/EDIT 视图中的列标题。带有 MYSQL 的 Ruby on Rails
Posted
技术标签:
【中文标题】如何根据从下拉列表中选择的 CATEGORY 来控制 NEW/EDIT 视图中的列标题。带有 MYSQL 的 Ruby on Rails【英文标题】:How to control column headings in the NEW/EDIT views based on the CATEGORY selected from a drop-down list. Ruby on Rails w/ MYSQL 【发布时间】:2011-07-30 22:39:38 【问题描述】:两种型号:
category has_many: components
component belongs_to: category
CATEGORY 表定义了不同组件类型的变量名称:
TYPE, VAR1, VAR2, VAR3, ...
Insulator, Voltage, Height, Material, ...
Current Transformer, Voltage, Ratio, Indoor, ...
在 COMPONENT 模型的 NEW/EDIT 视图中,用户将首先从下拉列表中划分 CATEGORY。根据选择的 CATEGORY,表单中的列标题和字段标签需要动态更新,以指示与所选 CATEGORY 关联的变量名称。
即如果用户选择 CATEGORY = Insulator THEN VAR1 ... VAR3 的字段标签是电压、高度、材料等。
我假设这将在典型脚手架的 _form.html.erb 中进行控制。我正在寻找推荐的技术。
提前感谢任何信息。
【问题讨论】:
【参考方案1】:响应用户在选择标签中选择不同选项而更改表单可能最好由 javascript 完成。这允许在客户端执行,这将比返回服务器更快。
我建议将不同的表单字段放在页面加载时隐藏的 div 标签内。通过绑定到 select 标签上的 JavaScript onChange 事件,可以切换每个类别组合以显示在表单中。
这里是关于选择标签的更多信息:http://www.w3schools.com/jsref/event_onchange.asp
【讨论】:
谢谢本。我将阅读 event_onchange。你正朝着正确的方向前进。这是否需要将不同的类别/变量组合存储在 javascript 中?如果是这样,恐怕该页面将需要高度维护,因为每当创建新类别时我都必须更新内容。有没有办法在客户端缓存查找列表,以便仅在表更改时引用该表?再次感谢。拜伦以上是关于如何根据从下拉列表中选择的 CATEGORY 来控制 NEW/EDIT 视图中的列标题。带有 MYSQL 的 Ruby on Rails的主要内容,如果未能解决你的问题,请参考以下文章