イベント投稿アプリを作っているのですが、アクティブハッシュのデータをcollection_selectメソッドにて検索機能を実装しようとしています。
参考コード
イベントコントローラー
before_action :authenticate_user!,only: [ :edit, :destroy, :new, :create] before_action :search_event, only: [:index, :search] # before_action :move_to_index, except: [:index, :show, :search] def index @events = Event.all end def new @event = Event.new end def create @event = current_user.events.build(event_params) tag_list = params[:event][:tag_ids].split(',') if @event.save @event.save_tags(tag_list) flash[:success] = '投稿しました!' redirect_to root_url else render 'new' end end def search @results = @p.result end private def search_event @p = Event.ransack(params[:q]) # 検索オブジェクトを生成 end
イベントモデル
class Event < ApplicationRecord extend ActiveHash::Associations::ActiveRecordExtensions belongs_to :user has_many_attached :images belongs_to :facility belongs_to :scale belongs_to :category has_many :event_tag_relations, dependent: :destroy has_many :tags, through: :event_tag_relations, dependent: :destroy has_many :comments, dependent: :destroy has_many :favorites has_many :users, through: :favorites
カテゴリーモデル(アクティブハッシュ)
class Category < ActiveHash::Base self.data = [ { id: 1, name: 'カテゴリー' }, { id: 2, name: '初詣・新年会'}, { id: 3, name: '節分'}, { id: 4, name: 'ひな祭り'}, { id: 5, name: 'お花見'}, { id: 6, name: '端午の節句'}, { id: 7, name: '母の日'}, { id: 8, name: '父の日'}, { id: 9, name: '七夕'}, { id: 10, name: '夏祭り'}, { id: 11, name: '十五夜'}, { id: 12, name: '敬老の日'}, { id: 13, name: '運動会'}, { id: 14, name: '紅葉狩り'}, { id: 15, name: 'クリスマス会'}, { id: 16, name: '年越し'}, { id: 17, name: '誕生日会'}, { id: 18, name: '音楽会'}, { id: 19, name: '食事関連'}, { id: 20, name: '外出'}, { id: 21, name: 'その他'} ] end ```イベントマイグレーションファイル ```ここに言語を入力 class CreateEvents < ActiveRecord::Migration[6.0] def change create_table :events do |t| t.references :user, null: false, foreign_key: true t.string :name, null: false t.text :explanation, null: false t.integer :facility_id, null: false t.integer :scale_id, null: false t.integer :category_id, null: false t.text :volunteer t.timestamps end end end
indexビュー
<%= search_form_for @p, url: events_search_path do |f| %> <%= f.collection_select(:category_id_eq, Category.all, :id, :name, {}, {class:"select-box"}) %> <%= f.submit "検索", class: "search-btn" %> ```searchビュー ```ここに言語を入力 <% if @results.length !=0 %> <% @results.each do |result| %> <td> <br> <li> <%= link_to result.name, event_path(result.id) %> </li> <% end %> <% else %> 該当するイベントはありません <% end %> ```### 行った事 category_idの検索をするため第一引数に:category_id_eq、第三引数に:idとしましたが、投稿されているイベントと同じカテゴリーを選択しても「該当するイベントはありません」と一致するイベントが表示されません。エラー表示はされていませんがsearchアクションが正常に機能していないと思われます。どこに原因があるかわかりません。よろしくお願いいたします
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。