2014-10-05 64 views
8

我有一個類別模型和一個子類別模型和id像SubCategory選擇輸入來刷新,取決於與我選擇的特定類別關聯的SubCategories。Activeadmin表格選擇下拉更新

form do |f| 
    f.inputs do 
     f.input :title 
     f.input :category, as: :select, collection: Category.all, :input_html => { :class => 'chzn-select', :width => 'auto', "data-placeholder" => 'Click' } 
     f.input :sub_category, as: :select, collection: SubCategory.all, :input_html => { :class => 'chzn-select', :width => 'auto', "data-placeholder" => 'Click' } 
    end 
    f.actions 
end 

回答

0
  1. 你必須創建一個構件的動作(方法:GET,則params:所選擇的類別的ID)中,返回的子類別(在JSON,例如)的ActiveAdmin類別模型屬於選擇類別:

    https://github.com/activeadmin/activeadmin/blob/master/docs/8-custom-actions.md#member-actions

  2. 你必須使用jQuery(對於〔實施例)與阿賈克斯,即填充子類別選擇輸入時,類別選擇輸入已更改:

    Populate Select box options on click with Javascript/Jquery with Json data https://forum.jquery.com/topic/best-practices-for-populating-selects-with-ajax

12

您可以使用依賴於選擇用於此目的。 例子說明here

主動聯繫

ActiveAdmin.register CatalogsProduct do 
    form do |f| 
    f.inputs "Details" do 
     f.input :product, :as => :select, :collection => Product.all.collect {|product| [product.name, product.id] } 
     f.input :catalog, :as => :select, :input_html => {'data-option-dependent' => true, 'data-option-url' => '/products/:catalogs_product_product_id/catalogs', 'data-option-observed' => 'catalogs_product_product_id'}, :collection => (resource.product ? resource.product.category.catalogs.collect {|catalog| [catalog.attr_name, catalog.id]} : []) 
    end 
    f.actions 
    end 
end 

目錄控制器

class CatalogsController < ApplicationController 
    respond_to :json 

    def index 
    if params[:product_id] 
     product = Product.find_by_id(params[:product_id]) 
     @catalogs = product.category.catalogs 
    else 
     @catalogs = Catalog.all 
    end 
    render :json => @catalogs.collect {|catalog| {:id => catalog.id, :name => catalog.attr_name} } 
    end 
end 
+3

如果你懶,只是想使串試試這個:'f.input:狀態,如:選擇,集合:([「new」,「checked_in」,「called」,「complete」])'' – michael 2016-04-21 13:46:43