2014-01-20 39 views
0

我正在構建一個Rails應用程序,該應用程序構建Active Admin來操作數據。 我有一個汽車經銷商以下型號:Active Admin:基於另一個select的嵌套「select」輸入

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形式「駕駛」模式,使而不是從所有可用型號的大名單中選擇模型,我應該能夠通過選擇「製造」然後選擇基於該製造的模型來縮小模型。

目前,我有這樣的:

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

沒有這樣的內置目前到活動管理員任何事情,儘管有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>"