- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个配方模型,该模型具有很多成分,每种成分都属于一个项目。在我的高级搜索表单中,我希望用户选择多种成分,然后让Ransack查找包含用户选择的所有成分的食谱。
我尝试了以下搜索字段:
= f.collection_select(:ingredients_item_id_in, Item.all, :id, :name, {}, {multiple: true})
:ingredients_item_id_in
更改为
:ingredients_item_id_in_all
会导致查询错误,因为一条记录不能包含item_id的多个值。
def search
@q = Recipe.ransack(params[:q])
@recipes = @q.result(distinct: true).include_related_models.published
end
最佳答案
我最近在我的项目中遇到了类似的任务( Rails 4.2.4 / Ruby 2.3.1 )。
遗产有很多安慰。我需要获得所有遗产,其中包括所有选定的舒适设施。
这是我使用Ransack
解决的方法
就我而言,我有has_many :through
关系。
estate.rb
class Estate < ActiveRecord::Base
has_many :estate_comforts
has_many :comforts, through: :estate_comforts
end
class Comfort < ActiveRecord::Base
has_many :estate_comforts
has_many :estates, through: :estate_comforts
end
class EstateComfort < ActiveRecord::Base
belongs_to :estate
belongs_to :comfort
end
post
进行搜索。为此,您必须编辑这样的路线。并将
search
操作添加到
estates_controlle.rb
。有关更多信息,请阅读Ransack
wiki。
...
resources :estates
collection do
match 'search' => 'estates#search', via: %i[get post], as: :search
end
end
class EstatesController < ApplicationController
...
def index
@q = Estate.ransack(params[:q])
@estates =
if params[:q]&.has_key?(:estate_comforts_comfort_id_eq_any)
# Store checked comforts
session[:estate_comforts_comfort_id_eq_any] = params[:q][:estate_comforts_comfort_id_eq_any]
comforts_count = params[:q][:estate_comforts_comfort_id_eq_any].count
ids = @q.result.includes(:estate_comforts).group_by(&:id).select { |_, v| v.count == comforts_count}.keys
Estate.where(id: ids)
else
@q.result(distinct: true)
end
end
def search
index
render :index
end
end
= search_form_for @q, url: search_estates_path, html: { method: :post } do |f|
# here goes the form inputs
# Polulate checkboxes with previously checked comforts
- Comfort.find_each do |comfort|
# Was checked previously?
- checked = comfort.id.to_s.in?(session[:estate_comforts_comfort_id_eq_any].to_a)
%div
%input{ name: 'q[estate_comforts_comfort_id_eq_any][]',
type: "checkbox",
id: "checkbox#{comfort.id}",
value: comfort.id,
checked: checked }
%label{for: "checkbox#{comfort.id}"}= comfort.name
<form class="estate_search" id="estate_search" action="/estates/search" accept-charset="UTF-8" method="post">
<div>
<input checked="" id="checkbox1" name="q[estate_comforts_comfort_id_eq_any][]" type="checkbox" value="1">
<label for="checkbox1">Comfort Name 1</label>
</div>
<div>
<input id="checkbox2" name="q[estate_comforts_comfort_id_eq_any][]" type="checkbox" value="2">
<label for="checkbox2">Comfort Name 2</label>
</div>
</form>
关于ruby-on-rails - Ransack,查找具有所有相关记录的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33767461/
我正在尝试为我们的搜索页面创建一个 Ransack 部分,该部分将查看学生的成绩表并在每种成绩的范围内找到学生。 给定:Student has_many Grades and Grade belong
我有一个 Commodity(name:string) 模型和一个 Price(amount:float) 模型: class Commodity 我现在使用 prices.f
我是 Rails 的新手,非常感谢您的帮助和建议。 我目前正在使用 gem ransack 在我的架构中,我有一个名为 adverts 的表与列 title & content 我正在尝试通过一个链接
我有一个包含多个分类法的模型,使用 act-as-taggable-on class Film ['happy', 'snooze']}).result.count => 2 Film.sear
我正在使用 Spree,并且在它使用 Ransack 的产品/搜索 Controller 操作中。 Spree 文档说 Spree 没有提供自定义页面大小的方法,所以我想我应该自定义操作本身以使用 R
我正在使用 Ransack gem 和我有一个模型,它的范围是这样的: scope :by_attr, ->(attr) { case attr when val1 query1
我正在使用 Ransack Gem 并通过计数器缓存进行计数排序。我的属性是一个整数。 我这样称呼它: 我得到的排序输出是: [人升] 1 2 0 0 [人物描述] 0 0 2 1 我要 人事部显示
我正在尝试使用 Ransack gem,但它返回所有 12,000 行而不是使用过滤器。 Controller : def list @q = LmiHost.ransack(params[:q])
我有一个配方模型,该模型具有很多成分,每种成分都属于一个项目。在我的高级搜索表单中,我希望用户选择多种成分,然后让Ransack查找包含用户选择的所有成分的食谱。 我尝试了以下搜索字段: = f.co
我正在处理 ransack,我需要按创建年份(仅年份,而不是整个日期)进行排序。所以我在 Controller 中有这个: @q = Book.search(params[:q]) @q.sorts
将 Rails 2 应用程序转换为 Rails 3,我必须更换 gem searchlogic .现在,使用 Rails 3.2.8 和 gem Ransack我想构建一个使用现有范围的搜索表单。例子
我正在使用 Ransack 来提供数据过滤器。 主用户模型具有以下关联: user has_many trips, through registrations 基本搜索条件如user's name=x
如何从“开始日期”到“结束日期”进行搜索,然后对搜索结果后的列求和并进行搜索和分组? 我可以从开始日期搜索到结束日期,但我被困在必须求和和分组的地方 例如。历史.group(:name).sum(:p
我正在尝试为名为 Space 的对象创建一个搜索表单。我已经尝试使用很多 if 和 elsif,但我意识到它不起作用,所以我开始检查 Ransack。看起来很棒,如果能让它正常工作的话。 问题是,我的
我有一个使用 Ransack 构建的工作搜索表单,其中有两个单独的搜索字段用于两个不同的类,如下所示: 这些类中的每一个都链接到一个公司类 class Co
我在我的应用程序中使用 ransack gem 作为搜索机制。我面临的问题是,在我的模型中,我不小心将“日期”列创建为字符串字段,因此日期搜索不起作用,我无法根据日期进行比较。由于该列的数据类型是字符
我将搜索表单和搜索结果发布在同一页面上。 据我了解:搜查的默认设置是,如果提交的表单没有在搜索字段中输入任何值,则返回该特定资源的所有记录。 我该如何更改它,以便如果用户在搜索字段中未输入任何值的情况
我想使用 ransack 为包含 Users 的页面构建高级搜索功能。我有一个从出生日期计算年龄的小方法: def age(dob) now = Time.now.utc.to_date no
我有一个表,'jobs' 和一个枚举字段'status'。 status 具有以下枚举集: enum status: [ :draft, :active, :archived ] 使用 ransack
我必须使用 ransack 对数据库进行搜索。数据库中的一些列将数据存储在序列化数组中。我想将存储在数组中的确切数据与用户发送的数据进行匹配以执行搜索(用户的数据也是数组)。例如,在数据库中,一列数据
我是一名优秀的程序员,十分优秀!