3

ルックアップ機能を提供するために、アクティブな管理者を使用して、カスタム ページに検索ウィジェット/フィルター機能を持たせたいと考えています。action_items を使用して、検索ページをレンダリングする独自のアクションとフォームを作成しました。検索ページで、表示する必要がある「フィルター」には、「親」リソースのテキスト フィールドと、親の親のドロップダウン リストが含まれます。協会は以下の通り

Class MyChildResource
  belongs_to :myParentResource

Class MyParentResource
  attr_accessible :name, :close_to_place, :date
  has_many :myChildResources
  belongs_to :myGrandParentResource

class MyGrandParentResource
  has_many :myParentResources

アクティブな管理リソースで

ActiveAdmin.register MyChildResource do
  action_item :only=>:index do
    link_to("Look Up Availability", search_admin_myChildResources_path)
  end

  collection_action :search do
    # do something here similar to the 'filter' feature like filter on myparentresource.date as date
    filter on myGrandParentResource as drop down 
    filter on myParentResource.close_to_place as string 
  end
end

独自のカスタム meta_search 機能を作成する必要がありますか? ユーザーの入力に基づいて独自の検索クエリを作成する必要がある場合でも問題ありませんが、親の親モデルからドロップダウン値を表示したり、アクティブな管理者の力を活用したりする方法が問題です。フィルター。

この質問で似たようなことを読みました。 Active Admin ダッシュボードにフィルターを追加する方法は? 、しかしそれはハックであり、リストを表示するという質問には絶対に答えません

4

1 に答える 1

3

これを行う DRY 方法が見つからなかったので、上記のリンクで述べたように「サイドバー」と「パネル」、およびドロップの各要素にアクティブな管理者 css を使用する独自の検索フォームを作成しました。ダウン、テキスト フィールド、日付、ボタン。サイドバーのようなウィジェットを取得します。検索結果については、独自のクエリを実行し、ユーザー入力に基づいて検索しています。検索フォームは次のようになります。

Search For <br>
<div id="search_filter_partial" class="panel_contents"> 
<%= form_tag(search_path,:remote=>true,:class=>"filter_form", :name=>"search_filters") do %>

    <div class="filter_form_field filter_string">
      <%= label_tag(:author, "Author",:class=>" label") %>
      <%= text_field_tag (:author) %>
    </div>

    <div class="filter_form_field filter_select">
    <%= label_tag(:book, "Book",:class=>" label") %>
     <%= select("book","book_id", @books.map {|u| [u.name,u.id]}) %>
    </div>

    <div class="filter_form_field filter_string">
      <%= label_tag(:published_date, "Published Date",:class=>"label")%>
      <%=  date_select :book,:published_date %>
    </div>

    <div class="buttons">
     <%= submit_tag('Find It', :onclick => "validateForm();") %>
     <a class="clear_filters_btn" href="#">Clear</a>
     <input id="order" type="hidden" value="id_desc" name="order">
     <input id="scope" type="hidden" name="scope">
   </div>
 <%end%></div>

見栄えはよくありませんが、Active Admin のルック アンド フィールとの一貫性を維持したいので、これが私が思いついた最高のものです。

于 2012-08-03T06:15:59.717 に答える