【问题标题】:Rails 3.1 Dependent / Cascading DropdownsRails 3.1 依赖/级联下拉菜单
【发布时间】:2011-06-22 11:55:25
【问题描述】:

我正在掌握 Rails 3.1,我希望有人能指出 Gem 的方向,这将允许我在表单上使用依赖选择(或指出如何在 Rails 3.1 中最好地完成此操作) .遇到过chained_selects插件,不过好像是依赖prototype的,所以在3.1中并不理想。

最简单的例子是汽车品牌/型号:

我有 3 个模型:vehicleMake、vehicleModel 和 vehicleTrim。我还有分配表vehicleMake_vehicleModel 和vehicleModel_vehicleTrim,它们指定了适合每个品牌的模型等。

我有一个车辆模型,我想用品牌、型号和装饰来填充它。车辆模型属于_vehicleMake、vehicleModel和vehicleTrim。

如何确保模型的下拉列表仅显示所选品牌的模型(因此用于修剪)?第二点,如何在我的车辆模型中验证这一点?

谢谢!

【问题讨论】:

  • 我创建了一个blog article,详细介绍了我在 Rails 3.1 中创建级联下拉菜单的最新解决方案(不需要 Ajax)。

标签: ruby-on-rails ruby-on-rails-3.1 cascadingdropdown


【解决方案1】:

我不知道有任何 jQuery 插件可以做到这一点。但实际上这只是一系列 Ajax 调用。

当从 Make 下拉列表中选择了一个选项时,您将其发送到服务器(通过 Ajax),取回关联的模型,并使用这些选项填充下一个下拉列表。然后重复修剪。

至于验证,您可能想要使用validates_inclusion_of 或者只是手动编写:

validate :model_matches_make?

def model_matches_make?
  unless Make_Model.where(make: self.make).map(&:model).includes?(self.model)
    errors.add(:make, "is not valid for your model") 
  end
end

(在那里使用地图感觉不对,所以也许有更好的方法)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-22
    • 1970-01-01
    • 1970-01-01
    • 2016-08-13
    • 1970-01-01
    • 2011-03-03
    • 1970-01-01
    相关资源
    最近更新 更多