4

Activeadminとrailsを初めて使用するので、助けが必要です。

ページ化されたモデルがあり、ユーザーがページ化値を変更したり、完全に無効にしたりできるようにしたいので、たとえば、すべてのレコード(またはフィルター処理されたレコード)を(プリンターに)印刷できます。

:before_filterの@per_pageを使用してページネーションを設定できることはわかっていますが、実行中にこの値を変更する方法がわかりません。

ページ化されていないすべてのレコードを表示する必要があるという問題を解決するために、カスタムページを定義しましたが、このページではフィルターまたはスコープが機能しないため、役に立たないものです。

Active Adminで印刷ボタンを作成するにはどうすればよいですか?

4

3 に答える 3

5

これは回避策です。最善の解決策ではないことはわかっていますが、うまくいきます。:) これは 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();
  })

私の答えが同じ問題を抱えている人々に役立つことを願っています:)

于 2013-09-14T09:56:06.563 に答える
3

私は解決策を見つけ、同じ問題を抱えている人のために自分の質問に答えています。それは最善の解決策ではないかもしれませんが、うまくいきます。誰かがより良い方法を持っている場合は、共有してください:

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
于 2012-11-23T10:44:47.330 に答える