看起来您可能必须创建自定义操作和视图。一种方法是使用这个自定义操作插件。这里还有一个关于如何构建自定义操作的教程。 我还使用了 SmarterCSV,它运行良好。
要向 Rails Admin 注册自定义操作,您可以在 config/initializers/rails_admin.rb 中执行此操作:
module RailsAdmin
module Config
module Actions
class YourClass < RailsAdmin::Config::Actions::Base
RailsAdmin::Config::Actions.register(self)
##code here, as explained more below
end
end
end
end
在此类中,您可以继承任何基本操作。因此,要在该类中注册自定义部分,您将执行以下操作:
# View partial name (called in default :controller block)
register_instance_option :template_name do
:your_class
end
您的 _your_class 部分必须在 app/views/rails_admin/main/ 中,您可以使用 multipart 处理表单。我不包括部分代码,如果您想让我了解一下,请告诉我。
您可能还希望对模型范围采取行动:
register_instance_option :collection? do
true
end
并将您的控制器代码放入其中。最好在此处处理处理,例如:
register_instance_option :controller do
Proc.new do
@order = Order.import(params[:file])
f = SmarterCSV.process(file.tempfile)
f.each do |r|
#combine date and time fields
r[:date_time] = [r[:date],r[:time]].join(' ')
Order.create("date" => r[:date_time])
end
end
end
接下来,您的操作应该像这样在 RailsAdmin::Config::Actions 中注册(此代码放置在 config/initializers/rails_admin.rb 中):
module RailsAdmin
module Config
module Actions
class ApproveReview < RailsAdmin::Config::Actions::Base
RailsAdmin::Config::Actions.register(self)
end
end
end
end
接下来,需要在 config/initializers/rails_admin.rb 中的操作配置中列出自定义操作:
RailsAdmin.config do |config|
config.actions do
dashboard
index
new
your_class
show
edit
delete
end
end
教程中有更多细节,但我认为这应该是一个非常可靠的开始!