以一个PMS系统中的供应商界面的功能来做例子,并没有将界面与后台代码解偶,而是绑定在了一起。controller是这个文件,view也是这个界面,只有model是另外的文件,这是rails的要求。该界面数据和数据库的一张表,或者说一个model相对应。一个界面就和一张数据表绑定,非绑定数据界面另放view中render。理解这一点才能更好的理解功能的实现。
#supplier.rb文件:
ActiveAdmin.register Supplier do
#permit_params:允许数据库传到界面的参数
permit_params :supplier_code, :supplier_type, :supplier_name, :supplier_simple, :company_address, :company_tel, :company_fax, :supplier_status, :company_account,
:account_name, :company_tax, :supplier_order, :contact_count, :attachment_count, :material_count, :remark, :operator_id, :payment_term
#分页开启,和每页数据量
config.paginate = true
config.per_page = 20
#默认排序
config.sort_order = 'supplier_order'
#禁用功能
config.filters = false
config.batch_actions = false
#绑定的数据表的信息展示,将展示的信息做处理,如果不写这段,数据表中的数据仍然会显示, 但是会显示所有字段,并且显示的列名为数据表的字段名,从网页显示的角度来说并不美观
index :title => '供应商列表' do
selectable_column
#id_column
column "编码", :supplier_code
column "类别", :supplier_type_name
column "名称", :supplier_name
column "公司地址", :company_address
column "状态", :supplier_status_name
column "备注", :remark
column "属性" do |f|
if f.attachment_count > 0
span do
image_tag "/assets/icons/address.png", height: '20', width: '20', title: "有附件"
end
end
end
actions
end
#界面方法,如非绑定数据界面的后台方法的
collection_action :get_users, :method => :post do
supplier_id = params[:id]
render json: SupplierContact.format_contact_data(supplier_id)
end
collection_action :save_contact, :method => :post do
render json: SupplierContact.save_contact_data(params)
end
#form表单显示 和index一样是一种数据展示的方式,其他的还有grid,Table,blog,Blocks
#
form do |f|
f.inputs "供应商信息" do
#只有新建时才更新
if resource.supplier_code.present?
supplier_code = resource.supplier_code
else
supplier_code = Base.get_model_code('GYS', 4, 'supplier')
end
f.input :supplier_code, :hint => "供应商唯一编号", :input_html => { :value => supplier_code, :readonly => true}, :label=> "供应商编号"
f.input :supplier_name, :label=> "供应商全称", :required => true
f.input :supplier_simple, :label=> "简称"
f.input :supplier_type, :as => :select, :collection => resource.supplier_type_ary, :include_blank => false, :label=> "供应商类别"
f.input :supplier_status, :as => :select, :collection => resource.supplier_status_ary, :include_blank => false, :label=> "供应商状态"
f.input :company_address, :label=> "公司地址"
f.input :company_tel, :label=> "公司座机"
f.input :company_fax, :label=> "公司传真"
f.input :company_account, :label=> "公司账户"
f.input :account_name, :label=> "账户名称"
f.input :company_tax, :label=> "税号"
f.input :payment_term, :label=> "付款周期"
f.input :remark, :input_html => { :rows => "5"}, :label=> "备注"
f.input :operator_id, :as => :hidden, :input_html => {:value => current_active_admin_user.id}
end
f.actions
end
end
其他相关:http://blog.csdn.net/feng88724/article/details/49124281