Rails 3.1 зависимых / каскадных выпадающих - PullRequest
0 голосов
/ 22 июня 2011

Я справляюсь с Rails 3.1, и я надеюсь, что кто-то может указать мне направление Gem, которое позволит мне использовать зависимые выборки в форме (или указать, как это лучше всего сделать в Rails 3.1) , Я сталкивался с плагином chained_selects, но, похоже, он опирается на прототип, поэтому он не идеален в 3.1.

Простейшим примером этого являются марки / модели автомобилей:

У меня есть 3 модели: vehicleMake, vehicleModel и vehicleTrim. У меня также есть таблицы назначений vehicleMake_vehicleModel и vehicleModel_vehicleTrim, которые указывают, какие модели подходят для каждой марки и т. Д.

У меня есть модель автомобиля, которую я пытаюсь заполнить маркой, моделью и комплектацией. Модель транспортного средства принадлежит к транспортному средствуMake, VehicleModel и vehicleTrim.

Как я могу убедиться, что в раскрывающемся списке моделей отображаются только модели для выбранной марки (и, следовательно, для обрезки)? В качестве второго пункта, как я могу проверить это в моей модели автомобиля?

Спасибо!

1 Ответ

2 голосов
/ 22 июня 2011

Я не знаю ни одного плагина jQuery, который бы делал это на моей голове. Но на самом деле это просто серия вызовов Ajax.

Если в раскрывающемся списке «Создать» выбран параметр, вы отправляете его на сервер (через Ajax), возвращаете связанные с ним Модели и заполняете следующий выпадающий список этими параметрами. Затем повторите для Trim.

Что касается проверки, вы, вероятно, захотите использовать 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

(использование карты кажется неправильным, так что, возможно, есть лучший способ)

...