ruby on railsに関して、ransackを使ったactiverecordの検索について
解決したいこと
解決したいこと
ransackを使ったサッカー選手検索機能を実装中です。
キーワードでの検索は成功するのですがactiverecordの検索ができません
フォームデータの送信はうまく行っているのですが、そこから先がわからないです。
発生している問題・エラー
<%= search_form_for @q, url: search_items_path do |f| %>
<%= f.label :name_cont, '選手検索' %>
<%= f.search_field :name_cont %>
<% f.label :category_id %>
<%= f.collection_select(:category_id, Category.all, :id, :name, {}, {class:"select-box", id:"category"}) %>
<% f.label :country_id %>
<%= f.collection_select(:country_id, Country.all, :id, :name, {}, {class:"select-box", id:"country"}) %>
<br>
<%= f.submit '検索' %>
<% end %>
これが問題のコードです
nameのみにキーワードを入れた場合
Parameters: {"q"=>{"name_cont"=>"メッシ", "category_id"=>"0", "country_id"=>"0"}, "commit"=>"検索"}
こうなって検索に成功しますが、activerecordからキーワードを入れた場合
Parameters: {"q"=>{"name_cont"=>"", "category_id"=>"1", "country_id"=>"0"}, "commit"=>"検索"}
この場合検索に失敗します
カテゴリーのみ入れた時の検索と、文字を何も入れずに検索した時の挙動が同じです
そのためカテゴリーidを受け取るための何かが欠けているのだと思います
全てのactiverecordに_contをつけた場合、nameにキーワードをれても検索に失敗します
modelは
itemが
class Item < ApplicationRecord
extend ActiveHash::Associations::ActiveRecordExtensions
belongs_to :category
belongs_to :minicategory
belongs_to :brand
end
categoryが
class Category < ActiveHash::Base
include ActiveHash::Associations
has_many :items
self.data = [
{ id: 0, name: 'カテゴリー選択' },
{ id: 1, name: 'キーパー' },
{ id: 2, name: 'ストライカー' },
]
end
よろしくお願いします
追記:コントローラーは
def search
@results = @q.result
end
private
def search_player
@q = Player.ransack(params[:q])
end
です