##前提・実現したいこと
学習開始2ヶ月の初心者です。
検索フォームにて検索をしたいのですが、うまくいきません。
タイトル通り半角英数字では問題ないのですが、
全角(かな、カナ、漢字)でエラー発生します。
バリデーションは特に設けておりません。
##発生している問題・エラーメッセージ
ActiveRecord::StatementInvalid in Items#search Mysql2::Error: Illegal mix of collations for operation 'like' <% end %> <div class="search_item"> <% @items.each do |item| %>????ここが赤いです <div class="search_new_item"> <div class="arrival_day" > <%= item.arrival_day %>
##(searchに該当する)該当のソースコード
ruby
1routes.rb 2 3Rails.application.routes.draw do 4 devise_for :users 5 root to: "items#index" 6 resources :items do 7 collection do 8 get 'search' 9 end
ruby
1items_controller.rb 2 3 def search 4 @items = Item.search(params[:keyword]) 5 end
ruby
1item.rb 2 3 with_options presence: true do 4 validates :image 5 validates :name, length: { maximum: 50 } 6 validates :text, length: { maximum: 1000 } 7 validates :deployment 8 validates :arrival_day 9 end 10 validates :stock_id, numericality: { other_than: 1 } 11 12 def self.search(search) 13 if search != "" 14 Item.where('name LIKE(?) OR arrival_day LIKE(?)', "%#{search}%", "%#{search}%") 15 else 16 Item.all.order("arrival_day DESC").limit(10) 17 end 18 end
ruby
1migrate_create_items_rb 2 3class CreateItems < ActiveRecord::Migration[6.0] 4 def change 5 create_table :items do |t| 6 t.string :name, null: false 7 t.text :text, null: false 8 t.integer :stock_id, null: false 9 t.string :storage_location 10 t.string :deployment, null: false 11 t.date :arrival_day, null: false 12 t.timestamps 13 end 14 end 15end
##試したこと
Mysql2::Error: Illegal mix of collations for operation 'like'を検索して、似た様な記事は見つけたが同じようなものを探せませんでした。
初めてのタイプのエラーなので全く分からず困っていますので、ヒントだけでもいただけましたらお願いします。
回答1件
あなたの回答
tips
プレビュー