###前提・実現したいこと
Ruby: 2.4.1
Rails: 5.1.3
検索機能を実装したいのですが、controller、view、ActiveModelそれぞれをどう実装したらいいのかご教授ください。
先にURL内にパラメータを直打ちし、狙い通りに抽出表示されるか確認し終え、いざフォームを作るぞ!ってところで躓きました。
###該当のソースコード
コートを探すという程でClass名を書いていますが、実際はそのコートを所有する施設を抽出するものとなります。ネットで参照した情報に、ActiveModelをlib/search_court.rbに書いてたのですが、そもそもなぜこのフォルダに入れるのか分かってません。Models内じゃないのか!?と思いながら...
Ruby
1#lib/search_court.rb 2class SearchCourt 3 # モデルの機能をincludeする 4 include ActiveModel::Model 5 6 # プロパティの定義 7 attr_accessor :name 8 9 # バリデートの設定 10 validates :name, presence: true 11 12 # 検索メソッドの実装 13 def search 14 self.valid? ? false : Facility.where('name LIKE ?', "%#{self.name}%") 15 end 16end
コントローラー側から作ったActiveModelを使おうとしたところ、「uninitialized constant StaticPagesController::SearchCourt」というエラー。コントローラー側から作ったActiveModelが見つけられていない状態のように思います。
Ruby
1#app/controllers/static_pages_controller.rb 2def court_list 3 @search_court = SearchCourt.new 4 @fac = Facility.all 5end
###試したこと
コントローラーとActiveModelのやりとりがうまくいけば、Viewでのform_forはなんとかなると思うのですが、そもそもこのActiveModelのやり方が分かってません。ransackなど使う方法もあると思うのですが、比較的シンプルな検索システムだと思うので、できるかぎり自前で実装したいと思います。バリデーションにはVirtusなど使いたいと思いますが、それは今やってることの先と考えています。
なお、そもそも大きな勘違いをしている可能性もあります。その場合はそこをご指摘いただいてもいいのですが、できるかぎり今の実装の方向に沿ってご教授いただけると幸いです。
回答1件
あなたの回答
tips
プレビュー