我正在开发一个rails应用程序,我构建Active Admin来操作数据。 我有一个汽车经销商的以下型号:
class Make < ActiveRecord::Base
has_many :models
end
class Model < ActiveRecord::Base
belongs_to :make
has_many :cars
end
class Car < ActiveRecord::Base
belongs_to :model
def make
self.model.make
end
end
我正在尝试调整ActiveAdmin“Car”模型中的表单,这样我就可以通过选择“make”来缩小模型范围,而不是从所有可用模型的大列表中选择模型。然后根据该品牌选择模型。
目前,我有这个:
ActiveAdmin.register Car do
controller do
def permitted_params
params.permit!
end
end
form :html => { :multipart => true } do |f|
f.inputs "Project Details" do |c|
f.input :vin
f.input :year
end
f.inputs "Make and model" do
f.input :maker, :as => :select, :collection => Make.all, :include_blank => false
f.input :model, :as => :select, :collection => Model.where(make_id: 1), :include_blank => false, :selected => (car.model.id if !car.model.nil?)
end
end
end
这很好用,“模型”下拉列表中列出的模型是我编码的make_id = 1的模型。我希望模型能够反映所选择的“制造商”。并且可能是一个基于make更新模型列表的按钮。
我该怎么做?
答案 0 :(得分:1)
目前,Active Admin中没有这样的内容,只有is a ticket for it。
你可以自己简单地实现这个。类似的东西:
select1 = fieldset.find 'select:first' # Companies
select2 = fieldset.find 'select:last' # Users
select1.change ->
$.get '/admin/users.json', q: {company_id_eq: $(@).val()}, (data)->
select2.html data.map (u)-> "<option value='#{u.id}'>#{u.name}</option>"
答案 1 :(得分:1)