【发布时间】:2018-06-08 12:17:33
【问题描述】:
我有一个 Rails 5.1 应用程序和一个带有包含一些数据库列的下拉列表的 Ransack 搜索表单。其中一列是finish_date,其值的格式为“2007-12-31”。在输入字段中,我必须准确输入完整日期才能获得匹配,但我想更改它只接受年份作为输入值的行为。
如何传入自定义谓词,将输入值从完整日期转换为例如。 2007-12-31 到只有一年?
我正在寻找的是 sql 查询的 Ransack 等效项:
SELECT *
FROM imagecapturing
WHERE YEAR(finish_date) = 2007
我的搜查表格:
<%= search_form_for @search do |f| %>
<%= f.grouping_fields(f.object.new_grouping) do |g| %>
<%= g.condition_fields(g.object.new_condition) do |c| %>
<%= c.predicate_select only: %i(cont not_eq eq) %>
<%= c.value_fields do |v| %>
<%= v.text_field :value %>
<% end %>
<% end %>
<% end %>
<%= f.submit "filter" %>
<% end %>
在我的控制器中:
@search = Imagecapturing.ransack params[:q]
@imagecapturings = @search.result.page params[:page]
【问题讨论】:
标签: ruby-on-rails ransack