質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.70%

RailsでCequel::Recordモデルに検索フォームをつけたい

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 1,157

Kosuke_Szk

score 8

前提・実現したいこと

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

該当のソースコード

class Admin::UsersController < Admin::ApplicationController
  def index
      @users = User.search(params[:search])
  end
end
class User
  include Cequel::Record
  key :id, :uuid, auto: true

  # basic info
  column :name, :text
  column :code, :text

  def self.search(search)
    if search
    find(:all, :conditions => ['name LIKE ?', "%#{search}%"])
  else
    find(:all)
    end
  end
end
<%- model_class = User -%>
<p id="notice"><%= notice %></p>
<h1>ユーザー一覧</h1>
<%= form_tag admin_users_path, method: :get do  %>
  <p>
    <%= text_field_tag :search, params[:search] %>
    <%= submit_tag "Search", :name => nil %>
  </p>
<% end %>

試したこと

0.ActiveAdminを使用していたので、Admin以下にuser.rbを置き、user.rbの中にコントローラーを書いて表示させた。しかしActiveAdminの機能である"filter :name"のような記載がエラーになってしまった。原因はCequelを使っていること?と勝手に思っています。

  1. コントローラーを外に出した。(app/controllers/以下に置いた)ここでransackを使用したが、viewの方で
    No Ransack::Search object was provided to search_form_for!
    とエラーが出る。Cequelにはransackは使えないのか、、、
  2. form_tagを使って検索フォームを作成(上記のソースコード)するも、うまく動かない。

補足情報(言語/FW/ツール等のバージョンなど)

cassandra 2.2.4
rails 4.2.6

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.70%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる