Tag: ruby on rails搜索

如何使用Ransack别名

我正在尝试使用Ransack实现别名,以缩短我的URL搜索查询。 根据文档: https : //github.com/activerecord-hackery/ransack#ransack-aliases class Post < ActiveRecord::Base belongs_to :author # Abbreviate :author_first_name_or_author_last_name to :author ransack_alias :author, :author_first_name_or_author_last_name end 然而,当我在我的模型中使用它时,我得到了一个 undefined method `ransack_alias’ for #

用Ransack全名搜索

我在inheritance的项目上有一个Ransack表单,如下所示: search_on值为student_first_name_or_student_last_name_or_student_email_cont 。 这适用于通过名字或姓氏或电子邮件进行搜索。 但是,如果我想搜索全名或名字或姓氏或电子邮件怎么办? 我怎样才能做到这一点?

如何配置Ransack Rails Gem以添加NULLS LAST进行排序

我希望Ransack总是添加NULLS LAST ,它会将空值放在排序列的最后。 有什么办法吗? 我在这个问题上打开了一个github问题: https : //github.com/activerecord-hackery/ransack/issues/443

与hansack进行OR

一个基本的问题,但我在项目页面或维基中找不到清楚的东西。 我有以下代码: field = “secre” Position.search( {:description_cont => field, :code_cont => field}).result(:distinct => true).to_sql => “SELECT DISTINCT `positions`.* FROM `positions` WHERE ((`positions`.`description` LIKE ‘%secre%’ AND `positions`.`code` LIKE 0))” 但我的查询应该是: => “SELECT DISTINCT `positions`.* FROM `positions` WHERE ((`positions`.`description` LIKE ‘%secre%’ OR `positions`.`code` LIKE 0))” 任何帮助,将不胜感激。 提前致谢

Ransack:如何使用不同的别名多次连接表?

假设我有:具有has_many关联的项:属性,那么我可以搜索具有名称’a_name’的属性和值’a_value’的所有项目,如下所示 q: { properties_name_eq: ‘a_name’, properties_value_eq: ‘a_value’ } 现在,如果我想搜索具有名称为“a_name”且值为“a_value”的属性以及名称为“another_name”且值为“another_value”的属性的所有项目,该怎么办? 以下不起作用,因为它只连接属性表一次 q: { g: { ‘0’ => { properties_name_eq: ‘a_name’, properties_value_eq: ‘a_value’ }, ‘1’ => { properties_name_eq: ‘another_name’, properties_value_eq: ‘another_value’} } } 生成的SQL看起来像这样 SELECT DISTINCT “items”.* FROM “items” LEFT OUTER JOIN “properties” ON “properties”.”item_id” = “items”.”id” INNER JOIN ((SELECT “items”.* FROM “items”)) AS sel_111 on sel_111.id […]

Ransack搜索结果 – to_xls?

我有一个搜索范围很好的搜索表单,我想为用户添加一个导出,将结果集的内容发送到XLS文件。 我也成功地实现了to_xls,但是它给了我正在搜索的对象的最大可能范围,而不是视图中显示的过滤结果。 def index @search = Expense.search(params[:q]) @expense_list = @search.result.sort_by(&:expense_date) respond_to do |format| format.html format.xml { render :xml => @expense_list } format.xls { send_data @expense_list.to_xls, :filename => ‘123.xls’} end end 它与ransack如何使用GET方法有关吗? 任何帮助都会很棒。 谢谢!

如何将Ransack搜索保存到数据库?

我正在尝试将Ransack搜索保存到数据库中。 我相信我应该能够存储params[:q]值,然后在我想要回忆搜索时将其附加到搜索URL。 不过,我不知道如何保存params[:q]值。 Ransack创建的URL是这样的: http://site.com/search?utf8=%E2%9C%93&q%5Bone%5D=something&q%5Btwo%5D=&q%5Bthree%5D=&q%5Blow_number%5D=0&q%5Bhigh_number%5D=300000&q%5Bfour%5D=&commit=Search 我将保存搜索的操作的路线是: match ‘users/:id/saved_search_add’ => ‘users#saved_search_add’, :as => :saved_search_add 如果我在视图中使用此代码: params[:q])) %> 在控制器中使用此代码: def saved_search_add @saved_search = Search.create(:query => params[:q].to_hash, :user_id => @user.id) respond_to do |format| if @saved_search.save format.html { redirect_to(:back) } else format.html { redirect_to(:back) } end end end 然后存储的数据是: — !ruby/hash:ActiveSupport::HashWithIndifferentAccess one: ” two: ” three: ” low_number: ‘0’ […]

Rails + Ransack – 下拉列表集合?

我喜欢ransack gem的灵活性,但是我无法让标准的collection_select正常运行。 也许有人可以提供帮助 例: 在这种情况下,此代码来自费用输入屏幕,因此第一个参数是费用对象。 在搜索forms中它应该是什么? 另外,我知道我需要在那里获得后缀。 在这个例子中,我想将project_id_eq作为搜索模式。 此外,我的表单位于控制器和视图“报告”,我不是将此搜索放在默认控制器中。 谢谢!

如何使用Ransack和Rails构建带有作用域的可单击链接

我要求在我的应用程序中将一些范围作为可点击链接。 这将允许用户根据需要更改他们看到的数据。 使用Ransack和它的ransackable_scopesfunction我非常接近。 我确实需要保留Ransack在用户点击范围时所做的任何过滤。 我有范围工作,但现在我只需要构建可点击链接。 这是我的模特: class Product { where( “status > ?”, 100).where(above_revenue_average: true).order(‘end_date DESC’) } scope :downward_trending, -> { where( “status < ?", 100).order('end_date DESC') } def self.ransackable_scopes(auth_object = nil) [:upward_trending, :downward_trending] end end 现在在我看来,我已将这两个范围添加为隐藏字段,如下所示: {:class => ‘filter-form’} do |f| %> ‘Search’ %> 从这里我只需要创建链接,它应该工作..这是最好的方法是什么? 谢谢你的帮助!

Ransack,查找具有所有相关记录的记录

我有一个配方模型,其中包含很多成分,每种成分都属于一个项目。 在我的高级搜索表单中,我希望用户选择多种成分,让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值。 有关在Ransack中创建此搜索参数的任何想法,还是应该为此创建子查询? 根据要求,我的控制器搜索方法: def search @q = Recipe.ransack(params[:q]) @recipes = @q.result(distinct: true).include_related_models.published end