カスタム アクションとビューを作成する必要があるようです。これを行う 1 つの方法は、このカスタム アクション プラグインを使用することです。カスタム アクションの作成方法に関するチュートリアルもここにあります。 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/ にある必要があります。マルチパートでフォームを処理できます。部分的なコードは含めません。試してみたい場合はお知らせください。
おそらく、モデル スコープでのアクションも必要になるでしょう。
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
チュートリアルにはさらに詳細がありますが、それはかなり堅実なスタートになるはずです!