ransacker_translatorは、ransackを使った検索で半角全角カナ、半角全角英数字、アルファベットの大文字小文字で関係なく検索できるようにするためのgemです。 マルチバイト圏に住んでいる我々のために作りました。
Gemfileに以下を追加します。:
gem 'ransacker_translator'
そして以下を実行しましょう。:
$ bundle install
もしくは、以下のようにしてgemを入れましょう。:
$ gem install ransacker_translator
ransacker_translatorをmodelでincludeします。 すると、ransacker_translateメソッドが使えるようになります。
# == Schema Information
#
# Table name: posts
#
# id :integer not null, primary key
# title :string(255) not null
# content :text
#
class Post < ActiveRecord::Base
include RansackerTranslator
ransacker_translate :title, :content
end
ApplicationControllerでは、FormatRansackParametersをincludeします。
class ApplicationController < ActionController::Base
include RansackerTranslator::FormatRansackParameters
# 半角スペース区切りの文字列を配列に変換します
before_action :format_ransack_params
end
PostsControllerはいつもの通りにしましょう。
class PostsController < ApplicationController
def index
@q = Post.search(params[:q])
end
end
app/views/posts/index.html.erbは以下のようになります。
<%= search_form_for @q do |f| %>
<%= f.text_field ransack_param_translate_normal_or_key(:title, :content),
# 配列になっているパラメータを半角スペース区切りの文字列に戻します
value: ransack_params_array_to_s(ransack_param_translate_normal_or_key(:title, :content)) %>
<%= f.submit "Search" %>
<% end %>
- Fork it ( https://github.com/patorash/ransacker_translator/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request