Activeadmin表单选择下拉列表更新

Dan*_*ell 15 ruby-on-rails activeadmin ruby-on-rails-4

我有一个类别模型和一个子类别模型和id类似于SubCategory选择输入要刷新,具体取决于与我选择的特定类别相关联的子类别.

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
Run Code Online (Sandbox Code Playgroud)

esh*_*iju 18

您可以使用依赖选择来实现此目的.这里给出示例

主动管理员

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
Run Code Online (Sandbox Code Playgroud)

目录控制器

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
Run Code Online (Sandbox Code Playgroud)

  • 如果你很懒,只想要make字符串试试这个:`f.input:status,as :: select,collection:(["new","checked_in","called","complete"]) (4认同)

nis*_*van 0

  1. 您必须在 ActiveAdmin 类别模型中创建一个成员操作(方法:GET,参数:所选类别的 ID),该模型返回属于所选类别的子类别(例如,以 json 形式):

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

  2. 您必须将 jQuery(例如maple)与 ajax 结合使用,当类别选择输入更改时,它会填充子类别选择输入:

    使用 Javascript/Jquery 使用 Json 数据填充选择框选项 https://forum.jquery.com/topic/best-practices-for-populate-selects-with-ajax