Tag: Ransack
gem "ransack"
def index @search = Item.ransack(params[:q]) @items = @search.result end
※searchじゃなくてransackメソッドのほうが推奨になったらしい(公式サイト)
<%= search_form_for @search do |f| %> <%= f.text_field :title_cont %> <%= f.submit '検索' %> <% end %> <% @items.each do |item| %> (省略) <% end %>
ernie/ransack_demoと、それを解説した#370 Ransack - RailsCastsが参考になる。
git clone https://github.com/ernie/ransack_demo
bundle install --path vendor/bundle
bundle exec rake db:create:all
bundle exec rake db:migrate
bundle exec rake db:fixtures:load
bundle exec rails s
@search = Post.ransack(params[:q]) @search.sorts = 'name asc' if @search.sorts.empty? #一つの場合 @search.sorts = ['name asc', 'created_at desc'] if @search.sorts.empty? # 複数の場合 @posts = @search.result.paginate(page: params[:page], per_page: 20)
params[:q][:s] = "rating desc"
@search.result.order("rating desc")
<%= sort_link(@q, :name, 'Last Name', default_order: :desc) %>
params[:q][:s] = build_sql(params[:sort_order])