CSVサーバーのフィルター条件の追加手順

ここでは実際に、「ファイル」項目で「...から始まる」フィルターの場合は、ファイル名の先頭の「_(アンダーバー)」が不足していたら補う条件を追加してみる。

filter_sqlsテーブルへの条件追加

name not_op operator wild1 item wild2 option
...から始まる LIKE item[0,1]=='_' ? item : "_#{item}" %

filter_setsテーブルへの条件セットの追加

  • zariganiユーザーでログインして、http://zarigani.ddo.jp:3001/filtersets/list を開く。
  • file_nameフィルター用の条件セットを追加する。セット名は、項目名と同じ「file_name」にした。
  • 先程のfilter_sqlsテーブルへ追加した条件も含める。


_filter_file_name.rhtmlの修正

app/views/csvs/_filter_file_name.rhtml
ビュー
  • 利用する条件セットを「file_name」に変更した。(オレンジ色の部分のみ)
<%= text_field_tag :filter_item, params[:filter_item], 
                   :name => "filter[#{@filter_count}][item]" %>
<% items = Filterset.find_by_name('file_name').filtersqls.map{|f| [f.name, f.id]} %>
<%= select_tag :filter_id, options_for_select(items, params[:filter_id].to_i), 
               :name => "filter[#{@filter_count}][id]" %>


以上の修正で、ファイル名先頭の「_(アンダーバー)」を良きに補完してくれるようになる。

      • filter_sqlテーブルのitem項目と、option項目は、rubyコードを評価するようにしておいて正解だった。ちょっと複雑な条件であっても、今回のように簡単な修正で実現できる。