我是 Activeadmin 和 rails 的新手,我需要一些帮助。
我有一个分页模型,我希望允许用户更改分页值或完全禁用它,因此它可以打印(到打印机)所有记录(或过滤的记录)。
我知道我可以在 :before_filter 中使用@per_page 设置分页,但我不知道如何在执行期间更改此值。
为了解决需要显示所有未分页记录的问题,我定义了一个自定义页面,但是在这个页面中,过滤器或范围不起作用,所以它有点没用。
如何在 Active Admin 中创建打印按钮?
我是 Activeadmin 和 rails 的新手,我需要一些帮助。
我有一个分页模型,我希望允许用户更改分页值或完全禁用它,因此它可以打印(到打印机)所有记录(或过滤的记录)。
我知道我可以在 :before_filter 中使用@per_page 设置分页,但我不知道如何在执行期间更改此值。
为了解决需要显示所有未分页记录的问题,我定义了一个自定义页面,但是在这个页面中,过滤器或范围不起作用,所以它有点没用。
如何在 Active Admin 中创建打印按钮?
这是一种解决方法,我知道这不是最好的解决方案,但它确实有效!:) 这是 app/admin/mymodel.rb 文件
ActiveAdmin.register MyModel do
before_filter :paginate
#other code
controller do
def paginate
@per_page = params[:pagination] unless params[:pagination].blank?
end
end
index do
panel "Pagination" do
render partial: "paginate", locals: {resource: "mymodels"}
end
#other code
end
#other code
end
对于 app/views/admin/articles/paginate.html.haml
#pagination_form
= form_tag do
= label_tag :pagination, "Number of " + resource + " per page : "
= text_field_tag :pagination
= submit_tag "Filter"
:javascript
$("#pagination_form form").submit(function(e){
e.preventDefault();
window.location = "/admin/#{resource}?pagination=" + $("#pagination").val();
})
希望我的回答能有同样问题的人:)
我找到了一个解决方案,我正在为有同样问题的人回答我自己的问题。这可能不是最好的解决方案,但它有效,如果有人有更好的方法,请分享:
ActiveAdmin.register mymodel do
before_filter :apply_pagination
# other code
index :download_links => false, :as => :table, :default => true do
if params[:pag].blank?
div link_to(I18n.t("text_for_the_link"), 'mymodel?pag=1', :class => "class_for_link")
else
div link_to(I18n.t("print.print"), 'mymodel', :class => "class_for_link")
end
# other code
end
controller do
def apply_pagination
if params[:pag].blank?
@per_page = 50
else
@per_page = 99999999
end
# other code
end
end
我发现您可以通过在资源上注册以下行来定义它:
ActiveAdmin.register MyModel do
config.per_page = [20, 50, 100, 200]
end
它会自动在索引分页中添加一个选择框,其中包含数组中给定的预设值。