使用全名搜索时,Gem Ransack 不会返回任何结果

2024-02-21

我正在使用 Ransack 和 Rails 3。

我的看法:

  <%= search_form_for @search do |f| %>
    <%= f.text_field :first_name_or_last_name_or_company_cont, :style => 'width:150px;padding-top:6px;' %><p class="button">
    <%= f.submit "Search by name or company" %></p>
  <% end %>

我的架构:

create_table "users", :force => true do |t|
    t.string   "first_name",                  
    t.string   "last_name"

在我的用户模型上:

  def full_name
    "#{self.first_name} #{self.last_name}"
  end

在控制台上工作。

如果我有用户first_name = "Foo", last_name = "Bar",当我使用任一搜索时,我都会得到预期的结果。

当我搜索时full_name = "Foo Bar",我没有得到任何结果。

我尝试将 Ransack 的 text_field 更改为:

<%= f.text_field :first_name_or_last_name_or_company_or_full_name_cont

I get first_name_or_last_name_or_company_or_full_name_cont is undefined

有没有一种快速方法可以解决此问题,而无需在用户表上添加另一列 full_name ?

also :

     7: def index
     8:   search_params = params[:q]
 =>  9:   binding.pry

[1] pry(#<UsersController>)> search_params
=> {"first_name_or_last_name_or_company_cont"=>"Foo Bar"}

我想我可以在这里拆分键值以仅搜索名字。


你必须使用一个Ransacker。将其添加到您的User model:

ransacker :full_name do |parent|
  Arel::Nodes::InfixOperation.new('||',
    parent.table[:first_name], parent.table[:last_name])
end

您可以检查搜查 GitHub wiki https://github.com/activerecord-hackery/ransack/wiki/Using-Ransackers#5-search-on-a-concatenated-full-name-from-first_name-and-last_name-several-examples更多例子。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用全名搜索时,Gem Ransack 不会返回任何结果 的相关文章

随机推荐

  • 使用 libwireshark 以编程方式获取 Wireshark 功能

    如果我想编写一个使用 Wireshark 功能的脚本 我会使用 tshark 我听说还有一个 libwireshark 可以在用 C 编写程序时使用 但是我一生都找不到any其文档 我尝试隔离wireshark源树中的库代码 但似乎代码组织
  • 如何在 linux-64 上安装 Anaconda Python 3.5 的图形工具?

    我正在尝试在 Ubuntu 14 04 x64 上安装 Anaconda Python 3 5 的图形工具 但事实证明这是一个真正的技巧 I tried 这种方法 https stackoverflow com questions 3222
  • Webpack V4:使用 Webpack 和 Uglify 删除 console.logs

    这个答案以前就像一个魅力 https stackoverflow com a 41041580 3894981 https stackoverflow com a 41041580 3894981 然而 从 Webpack v4 开始 它不
  • YamlDotNet !!二进制类型

    我正在尝试使用 yaml 发送二进制数据 即字节数组 根据yaml文档 Yaml 二进制类型 http yaml org type binary html 这是支持的 在 Java 端 我使用 SnakeYaml 如果传递了 byte 值
  • 滚动不适用于 CoordinatorLayout + 视差图像 + BottomSheetLayout

    介绍 我有一个活动 它使用视差标题图像和滚动内容来实现通用模式CoordinatorLayout AppBarLayout and CollapsingToolbarLayout 我的 xml 布局如下所示
  • Yocto Bitbake Glibc 构建失败

    我正在尝试构建 Yocto 映像 但编译 glibc 时构建失败 如果我只跑 bitbake glibc c compile 我收到编译错误如下 usr src debug glibc 2 27 r0 git nptl pthread at
  • 如何将 git 存储库的一部分提取到它自己的存储库中,同时保留历史记录和文件结构?

    我有一个大型 git 存储库 其文件夹结构如下 A B C D 我想将 A 和 B 文件夹提取到它们自己的存储库中 同时维护历史记录 我只关心主分支 因此 新的存储库将如下所示 A B 我怎样才能做到这一点 我发现 git filter b
  • 无法理解列表推导式

    我刚刚开始学习 haskell 字面意思是今晚 并且我在理解列表理解的逻辑时遇到了一些困难 更具体地说是 lt 操作员 一个小例子学习一些 Haskell http learnyouahaskell com starting out查找长度
  • 简单的 Java 按钮来显示圆

    我目前正在学习java 我理解除图形之外的概念 作为程序员 这对我来说是全新的 坦白说 它让我不知所措 理论上 我的示例应该在按下按钮时显示一个圆圈 使用打印方法进行调试 我不断发现 Button 正确调用了所有方法并创建了一个新的 Cir
  • 从Java中的mimepart获取图像的base64内容字符串

    我正在尝试获取 MimeMultiPart 中 MimePart 的 base64 内容 但我在使用 Javamail 包时遇到了困难 我只是想要某个内联图像的 base64 编码字符串 但似乎没有一种简单的方法可以做到这一点 我写了一个方
  • AngularJS:如何从控制器功能切换视图?

    我正在尝试使用ng clickAngularJS 的切换视图功能 我将如何使用下面的代码来做到这一点 索引 html div div click me div div 控制器 js function Cntrl scope scope so
  • 打击存在不起作用

    实际上我使用 smack API 编写了一个 IM 服务 继承了 google chat 但是当我想打印好友列表及其存在时 编译模式显示所有存在不可用 但在调试模式下它显示真正的可用性 我的代码是 1 创建连接 public boolean
  • 使用 Chart.js 绘制条形图的 X 轴多色标签

    我需要不同颜色的 x 轴标签 我使用 chart js 我尝试了下面的代码 但它不起作用 只显示单色 scales xAxes ticks fontColor rgba 245 88 97 1 rgba 245 88 97 1 rgba 2
  • 如何在 Rust 中创建具有常量值的枚举?

    我可以做这个 enum MyEnum A i32 B i32 但不是这个 enum MyEnum A 123 123 is a constant B 456 456 is a constant 我可以创建结构A and B使用单个字段 然后
  • 删除传单地图上的图例

    我有一个传单地图 设置为当用户单击按钮时根据类别更改样式 实时地图 http maneesha github io test map html http maneesha github io test map html 源代码 https
  • Android MediaCodec 输出格式:GLES 外部纹理 (YUV/NV12) 到 GLES 纹理 (RGB)

    我目前正在尝试在 Android 上开发一个视频播放器 但在颜色格式方面遇到了困难 Context 我通过以下标准组合提取和解码视频媒体提取器 媒体编解码器 因为我需要提取的帧可用作 OpenGLES 纹理 RGB 我设置了我的解码器 媒体
  • 更改 FontSize 以适合 TextBlock

    我正在开发 Windows 8 应用商店应用程序 我们知道显示尺寸有很大不同 因此所有元素都有可拉伸设置 因此如果显示较小 元素 图片 图表等 较小 如果显示较大 则较大 除了 TextBlocks 标签 之外 一切都完美 TextBloc
  • 如何将图标添加到我的存储库?

    我发现 Gitlab 和 SourceTree 支持每个存储库的图标 这使得它们更加具体且易于一眼找到 这怎么可能 作为开发人员 我们有时需要进行更改以使我们的工具看起来有所不同 你可以添加一个小的 我更喜欢96px x 96px logo
  • 有什么跨平台方法可以从标头构建 cpp 骨架吗? [复制]

    这个问题在这里已经有答案了 我厌倦了将标头复制粘贴到我的 cpp 文件中 然后对其进行修改 直到其格式正确 有没有人编写过一个程序来读取头文件并制作相应的cpp框架 我需要一些跨平台的东西或者至少可以在 Linux 上运行的东西 vim 插
  • 使用全名搜索时,Gem Ransack 不会返回任何结果

    我正在使用 Ransack 和 Rails 3 我的看法 p class button p 我的架构 create table users force gt true do t t string first name