表单选择选项并响应以对应另一个表单选择器

时间:2010-01-09 01:38:02

标签: ruby-on-rails

现在我正在寻找关于如何制作一个下拉选择表格的解决方案,该表格会对相应的选择有不同的反应...
例如,我为占领做了一个下拉选择器...

当我选择信息技术时,它会显示另一个选择器,指定仅在用户选择信息技术时显示...弹出选择器允许我们选择与网页设计等相关的所有内容...

我可以知道如何使用rails吗?

1 个答案:

答案 0 :(得分:1)

我会在这里使用某种DHTML解决方案。实际上,您并不依赖于Rails进行溶出。

假设您有两类职业,分别是“IT Stuff”和“Flower Arranging”。每个人都有一个子类别。

您视图中的表单(xxx.erb.html)将如下所示:

<form>

  <select name="profession" onChange="makeVisible(this.options[selectedIndex].value);">
    <option value="itstuff">IT Stuff</option>
    <option value="flowerarranging">Flower Arranging</option>
  </select>
  <div id="itstuff" style="display:none" >
    <!-- Here is where you put the <select> for the sub-categories of IT Stuff -->
    <select name="itsub">
      <option value="WindowsAdmin">Windows</option>
      <option value="NeXTStepAdmin">NeXT</option>
    </select>
  </div>

  <div id="flowerarranging" style="display:none">
    <!-- Here is where you put the <select> for the sub-categories of IT Stuff -->

    <select name="flowersub">
      <option value="roses">Roses</option>
      <option value="daisies">Daisies</option>
    </select>
  </div>
  <input type="submit" value="Submit Profession INfo" />
</form>

<script>
  function makeAllInvisible() {
    document.getElementById('itstuff').style.display='none';
    document.getElementById('flowerarranging').style.display='none';
  }
  function makeVisible(id) {
    makeAllInvisible();
    document.getElementById(id).style.display='block';
  }
</script>

一旦你有了,你的表单处理程序将需要能够处理表单的所有输入,包括不可见部分中的输入。在Rails中,这意味着你将不得不处理params [:profession],params [:itsub]和params [:flowersub]来处理这个表单的所有提交。

请注意在此处使用Rails表单助手。我没有在Rails form_for帮助程序中为select标签找到一个好的Rails表单标签。我通常手工编写代码。