検索機能、つけちゃった:-)

いや、もう、フォームとか扱うのって、面倒な感じがして、嫌いなんだよねぇ、昔っから。


つうか、ね?
クエリ受け取ってウラで動くスクリプトが必要なのを作るのって、どうも苦手意識というか、なんというか...


なんだけど、ほら、なんて云うの?
あまりビジターがいないとしても、偶に覗きにいらっしゃる、ええーっと、Google大先生とか?wの為にも、ネタ作らないといけないじゃない?


で、AJAX関係やろうかな、と思ってたんだけど、でも、Event.observerのセットをどうするか考えてたら、あんまり良い案が浮かばなかったんで、とりあえず、検索を、とwww


で。
まあ、どことは云わないけど、mixiみたいに、ウィンドウの右上に検索窓をつけて、そこに文字列をいれれば、ユーザを検索してくれる、というヤツを。


が。

  • 検索の為のフィールドは一つ
  • 空白文字による、複数キーワードでの検索に対応(ANDのみ)
  • モデルはUser
  • Userモデルの内、:nickname、:family_name、:middle_name、:given_name、:emailを検索対象とする

という感じ、よくあるよね?
でも、どう:conditionsを書けばいいのか、サッパリ解らんwww
そりゃあ、調べまくりましたともwww


もう、眠いよパトラッシュっ!


参考にしたのは、

この辺。


で、追加したコードが、こんな感じ。

  def search
    @search = Array.new
    @search << params[:search].split(/ /)
    @search = @search.delete_if{|word| word.empty?}
    @search = @search.map.join("%")
    @users = User.paginate(:page => params[:page],
                            :per_page => params[:per_page]||= 10,
                            :order => params[:order],
                            :conditions => ["(nickname || family_name || middle_name || given_name || email) like ?",
                                            "%" + @search + "%"])
    flash[:notice] = "User was Not Found" unless @user
    render(:action => "index")
  end


...なんか、ブサイクだよねぇ......
ひたすら@searchを加工している姿が、なんか、もう、必死過ぎwww
アラフォーさん達の婚活くらいにwwwww


まあ、それはヨシとしてwww
一番始めにArray.newしているのは、params[:search]の文字列に空白文字が含まれていないと、Arrayにならず、delete_ifでNoMethodエラーが返ってくるから。
renderで飛ばしているindexアクションは、Userモデルの一覧になっていて、will_paginateでページネイションしているから、こっちもそうした。


んで、ビュー側では、こんなのを追加。

  <%- form_tag(search_admin_users_path) do -%>
    <%= text_field_tag(:search) %>
    <%= submit_tag("Search") %>
  <%- end -%>


以外に、こんな単純なことでも、いざ、探してみると、中々見つからないんだよねぇー。
もう、朝になっちゃったよ...