Ruby on RailsのプロジェクトにRansackというGemを追加すると検索が簡単になる、というので早速入れてみた。
ところが、そう簡単にはいかない。
1 2 3 4 5 |
<%= search_form_for @search do |f| %> <%= f.label :name_or_company_cont, "name or company" %> <%= f.search_field :name_or_company_cont %> <%= f.submit %> <% end %> |
この一番先頭の行でタイトルのようなエラーが表示されてにっちもさっちもいかなくなった。
1 2 3 4 5 6 7 8 9 |
def index @search = User.search(params[:q]) @users = @search.result.order('updated_at DESC') respond_to do |format| format.html # index.html.erb format.json { render json: @users } end end |
ググってみると、@search = User.search(params[:q])は、次のように外に出した方がいいとか載っていたのでやてみたが結果としてうまくいかなかった。
1 2 3 4 |
before_filter :set_search def set_search @search = User.search(params[:q]) end |
で、結局わかったのは、search()ではなく、ransack()とすればうまく言った。
1 2 3 4 |
before_filter :set_search def set_search @search = User.ransack(params[:q]) end |
http://stackoverflow.com/questions/23539162/ransacksearch-object-was-provided-to-search-form-for
改めてgitHubのページを見たらちゃんと書いてあるじゃないか。問題点をググるより先に公式っぽいページをみないといけない。やれやれ時間がかかった。