Rails 6是一种用于开发Web应用程序的开源框架,它基于Ruby语言。ActiveAdmin是Rails的一个开源插件,可以帮助开发者快速构建后台管理界面。
动态下拉选择是指在选择一个下拉菜单选项后,另一个下拉菜单的选项会随之发生变化。这种功能可以通过Rails 6的ActiveAdmin插件来实现,具体步骤如下:
gem 'activeadmin'
rails generate active_admin:install
rails generate active_admin:resource Product
form do |f|
f.inputs 'Product Details' do
f.input :category, collection: Category.all.map{ |c| [c.name, c.id] }, prompt: 'Select category', input_html: { id: 'category_select' }
f.input :brand, collection: proc { |product| Brand.where(category_id: product.category_id).map{ |b| [b.name, b.id] } }, prompt: 'Select brand', input_html: { id: 'brand_select' }
end
f.actions
end
# Ajax request to update brand options when category selection changes
script :javascript do
<<-JS
$(document).ready(function() {
$('#category_select').on('change', function() {
var categoryId = $(this).val();
var url = '/admin/brands/' + categoryId + '/options'; // Replace with the actual URL to fetch brand options
$.ajax({
url: url,
method: 'GET',
success: function(data) {
var options = data.map(function(option) {
return '<option value="' + option[1] + '">' + option[0] + '</option>';
});
$('#brand_select').html(options.join(''));
}
});
});
});
JS
end
上述代码中,collection
参数用于指定下拉菜单的选项,prompt
参数用于设置默认的提示选项,input_html
参数用于设置下拉菜单的HTML属性。通过jQuery的ajax方法,监听第一个下拉菜单(category)的变化,并发送异步请求获取动态更新的第二个下拉菜单(brand)的选项。
namespace :admin do
resources :brands, only: [] do
get 'options', on: :member
end
end
class Admin::BrandsController < Admin::BaseController
def options
category = Category.find(params[:id])
brands = category.brands.pluck(:name, :id)
render json: brands
end
end
form do |f|
f.inputs 'Product Details' do
f.input :category, collection: Category.all.map{ |c| [c.name, c.id] }, prompt: 'Select category', input_html: { id: 'category_select' }
f.input :brand, collection: proc { |product| Brand.where(category_id: product.category_id).map{ |b| [b.name, b.id] } }, prompt: 'Select brand', input_html: { id: 'brand_select' }
end
f.actions
end
以上就是使用Rails 6 ActiveAdmin实现支持页面重载的动态下拉选择的步骤。通过上述代码,用户在选择产品分类后,品牌下拉菜单的选项会实时更新。具体的优势在于提升了用户体验和操作效率。
推荐的腾讯云产品:腾讯云服务器(云服务器),产品介绍链接地址:https://cloud.tencent.com/product/cvm
领取专属 10元无门槛券
手把手带您无忧上云