rails 3中的动态列表

时间:2011-10-08 13:41:16

标签: ruby-on-rails ruby ruby-on-rails-3

我想知道是否有关于如何制作动态选择表单的插件或教程?

我正在尝试使用f.select选择汽车名称,并且根据在下一个f.select中选择的汽车名称,将仅显示属于汽车名称的车型。 我已经尝试过Railscasts解决方案,但它似乎是旧版本的rails或我做错了什么。 感谢。

我使用的是rails 3.0,我试过的railscast是http://railscasts.com/episodes/88-dynamic-select-menus

1 个答案:

答案 0 :(得分:3)

没有自动方式(如果我理解正确 - 当用户在某个选择框中选择carname时,另一个选择框中的选项必须相应地更改)。我将假设carmodel是一个选择框,但如果它是一个文本框,你仍然可以使用相同的解决方案。你基本上有两个选择:

  • 在两个选项中,您必须挂钩选择框的更改事件。你可以用例如jQuery为此:http://api.jquery.com/change/
  • 没有Ajax的选项1:将所有JSON格式的汽车模型输出到页面中(如var carModels = {...}),然后在carname选择框的更改事件中,使用javascript / jQuery仅添加从carModels到选择框选项的适当模型
  • 使用Ajax的选项2:在选择carname选择框时,将Ajax请求(来自jQuery的$ .post)发送到服务器,其中包含有关carname中所选值的信息。服务器应该以JSON格式返回适当的汽车模型列表。返回结果后,只需将所有值插入选择框即可。要从服务器以json格式返回此数据,您需要创建一个像get_models这样的后期操作。要以json格式返回数据,您可以使用render:text => @ models.all.to_json

Ajax解决方案将更容易,因为您需要更少的Javascript逻辑。

要了解如何使用jQuery添加选项框的选项,请查看以下问题:What is the best way to add options to a select from an array with jQuery?