簡體   English   中英

復選框搜索Ransack gem

[英]Check boxes search with Ransack gem

我需要過濾表格中的數據。 為此,我找到了meta_search gem。 我安裝了meta_search,我收到此錯誤:

uninitialized constantActiveRecord::Associations::ClassMethods::JoinDependency

對於Rails 4(我正在使用的框架), 已被棄用。 所以,我安裝了ransack(rails 4 branch) (基於meta_search的gem)並且工作得很漂亮。 問題是我需要使用meta_search的collection_checks方法來處理復選框,並且這種方法在搜索中不存在。 所以,問題是:在ransack中有一個類似於collection_checks的方法來管理復選框嗎? 或者我該怎么做?

我有這個:

在此輸入圖像描述

我想過濾汽車,自行車或兩者的行

我不熟悉元搜索,但在Ransack(在Rails 4中)你可以使用這樣的東西:

楷模:

class User < ActiveRecord::Base
  has_many :user_vehicles 
  has_many :vehicles, through: :user_vehicles
end

class UserVehicle < ActiveRecord::Base
  belongs_to :user
  belongs_to :vehicle
end

class Vehicle < ActiveRecord::Base
  has_many :user_vehicles
end

控制器:

class UsersController < ApplicationController
  def index
    @q = User.search(params[:q])
    @users = @q.result(distinct: true)
  end
end

視圖:

<%= search_form_for @q , url: users_path, :html => { class: 'your-class' } do |f| %>
  <% Vehicle.all.each do |vehicle| %>
     <%= check_box_tag('q[vehicles_id_eq_any][]', vehicle.id ) %>
     <%= vehicle.name %>
  <% end %>
  <%= f.submit "Search" %>
<% end %>

<%= paginate(@users) %>
  <ul>
    <% @users.each do |i| %>
      <li><%= i.name %></li>
    <% end %>
  </ul>
<%= paginate(@users) %>

如果您仍然不使用寶石,也可以使用寶石進行分頁。 我用Kaminari。 在這種情況下,您的控制器和視圖可能如下所示:

控制器:

class UsersController < ApplicationController
  def index
    @q = User.search(params[:q])
    @users = @q.result(distinct: true).page params[:page]
  end
end

視圖:

<%= search_form_for @q , url: users_path, :html => { class: 'your-class' } do |f| %>
  <% Vehicle.all.each do |vehicle| %>
     <%= check_box_tag('q[vehicles_id_eq_any][]', vehicle.id ) %>
     <%= vehicle.name %>
  <% end %>
  <%= f.submit "Search" %>
<% end %>

<%= paginate(@users) %>
  <ul>
    <% @users.each do |i| %>
      <li><%= i.name %></li>
    <% end %>
  </ul>
<%= paginate(@users) %>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM