ruby-on-rails - 将导出选项添加到 Rails 管理员自定义页面
问题描述
我在 Rails Admin 中有以下自定义页面:
require 'rails_admin/config/actions'
require 'rails_admin/config/actions/base'
module RailsAdminSapSaeQualifiedSearch
end
module RailsAdmin
module Config
module Actions
class SapSaeQualifiedSearch < RailsAdmin::Config::Actions::Base
RailsAdmin::Config::Actions.register(self)
register_instance_option :collection? do
true
end
register_instance_option :link_icon do
'fa fa-search'
end
register_instance_option :visible? do
authorized? && bindings[:abstract_model].model == Customer
end
register_instance_option :http_methods do
[:get, :patch]
end
register_instance_option :controller do
Proc.new do
if request.get?
@users = []
elsif request.patch?
@users = User.send(params[:qualification], params[:start_at], params[:stop_at], params[:zip])
end
render :action => @action.template_name
end
end
end
end
end
end
...连同这个相关的视图:
<br>
<%= form_tag sap_sae_qualified_search_path(@abstract_model), method: :patch, class: "form-inline" do %>
<div class="form-group">
<%= label_tag :qualification, "Qualification Type:" %>
<%= select_tag :qualification, options_for_select([['SAP', 'sap_qualified'], ['SAE', 'sae_qualified']]), class: "form-control" %>
</div>
<div class="form-group">
<%= label_tag :start_at, "Between:" %>
<%= text_field_tag :start_at, params[:start_at] ||= 3.years.ago.to_date, class: "form-control customedate" %>
</div>
<div class="form-group">
<%= label_tag :stop_at, "and:" %>
<%= text_field_tag :stop_at, params[:stop_at] ||= Date.today, class: "form-control customedate" %>
</div>
<div class="form-group">
<%= label_tag :zip, "Zip Code:" %>
<%= text_field_tag :zip, params[:zip] %>
</div>
<%= button_tag "Search", class: "btn btn-default"%>
<% end %>
<script>
$( ".customedate" ).datepicker();
</script>
<% if @users.any? %>
<%= @users.length %> Users found
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Name</th>
<th>Email</th>
<th>Phone</th>
<th>Qualified Courses</th>
<th>Licences</th>
<th></th>
</tr>
</thead>
<% @users.each do |user| %>
<tr>
<td width="1%" nowrap><%= user.full_name %></td>
<td width="1%" nowrap><%= user.email %></td>
<td width="1%" nowrap><%= user.phone_1 %></td>
<td style="white-space: normal;"><%= user.sap_courses_passed.where('class_registrations.exam_completed_at >= ? AND class_registrations.exam_completed_at <= ?', params[:start_at].to_date.beginning_of_day, params[:stop_at].to_date.beginning_of_day).collect{|c| "<small><b>#{c.exam_completed_at.strftime('%F')}</b> -- #{c.course_class.title}</small>"}.join('<br>').html_safe %></td>
<td><% user.licenses.each do |l| %>
<%= l.profession %>, <%= l.number %>, <%= l.state %><br>
<% end %>
</td>
<td width="1%" nowrap><%= link_to "Details", {:action => :show, :controller => 'rails_admin/main', :model_name => "Customer", :id => user.id }, class: "btn btn-default", target: "_blank" %></td>
</tr>
<% end %>
</table>
<% end %>
我想在这个视图中添加一个 Rails Admin Export 按钮。我尝试了类似的东西
register_instance_option :export do
true
end
......没有运气。任何帮助或想法表示赞赏。
解决方案
您必须在 rails admin config 上执行此操作
config/initializers/rails_admin.rb
RailsAdmin.config do |config|
[...]
config.actions do
[...]
sap_sae_qualified_search do
only %w{ Customer }
end
end
end
如果这不起作用,您还可以尝试在配置块之前在同一文件上注册操作,如下所示:
RailsAdmin::Config::Actions.register(
:sap_sae_qualified_search,
RailsAdmin::Config::Actions::SapSaeQualifiedSearch
)
推荐阅读
- visual-studio-code - DropDownList cacadierend
- haskell - 关闭文件句柄会导致 Haskell 出现问题
- javascript - 变量方法不要重复我自己:document.getElementById?
- javascript - 如何从反应连接到谷歌云存储并获取私有对象
- python - 在 python IDLE 中没有得到程序输出
- json - 我怎样才能弄清楚一个文本文件是用什么压缩的?
- laravel - 如果用户不存在,我如何从用户表中检索用户信息并处理错误?
- python - 将numpy数组转换为numpy列python
- xamarin - 如何在 Xamarin 表单 ContentPage IconImageSource 中显示图像
- python - Python - 将同一标题下的每个列表数据的新行写入csv