###前提・実現したいこと
Cequel::Recordをincludeしたモデルに対して検索機能をつけたいです。
###発生している問題・エラーメッセージ
ActiveRecordでないのでransackを使用した検索機能の実装ができませんでした。
そこで、form_tagを使った検索機能を作ろうとしましたが、pathに検索ワードが追加するだけで、検索ワードによる絞り込みが行われません。
現在、検索フォームでワードを入力しても↓のpathに変化はしますが、絞り込みの動きが起こらない状態です。
http://localhost:3000/admin/users**?utf8=%E2%9C%93&search=hoge**
"hoge"が検索ワードです。
hogeで検索をかけても何も起こりません。
CassandraのDBを使用しなければならないのですが、ネット上に検索機能に関する情報が少なくて困っています、、、
cequelの方にもransackのように検索機能を実装できるgemが存在したりするのでしょうか?
どうかお願い致しますmm
###該当のソースコード
users_controoler.rb
1class Admin::UsersController < Admin::ApplicationController 2 def index 3 @users = User.search(params[:search]) 4 end 5end
user.rb
1class User 2 include Cequel::Record 3 key :id, :uuid, auto: true 4 5 # basic info 6 column :name, :text 7 column :code, :text 8 9 def self.search(search) 10 if search 11 find(:all, :conditions => ['name LIKE ?', "%#{search}%"]) 12 else 13 find(:all) 14 end 15 end 16end
index.html.erb
1<%- model_class = User -%> 2<p id="notice"><%= notice %></p> 3<h1>ユーザー一覧</h1> 4<%= form_tag admin_users_path, method: :get do %> 5 <p> 6 <%= text_field_tag :search, params[:search] %> 7 <%= submit_tag "Search", :name => nil %> 8 </p> 9<% end %>
###試したこと
0.ActiveAdminを使用していたので、Admin以下にuser.rbを置き、user.rbの中にコントローラーを書いて表示させた。しかしActiveAdminの機能である"filter :name"のような記載がエラーになってしまった。原因はCequelを使っていること?と勝手に思っています。
0. コントローラーを外に出した。(app/controllers/以下に置いた)ここでransackを使用したが、viewの方で
No Ransack::Search object was provided to search_form_for!
とエラーが出る。Cequelにはransackは使えないのか、、、
0. form_tagを使って検索フォームを作成(上記のソースコード)するも、うまく動かない。
###補足情報(言語/FW/ツール等のバージョンなど)
cassandra 2.2.4
rails 4.2.6
あなたの回答
tips
プレビュー