在 Rails 中的 Globalize3 表上进行简单搜索

2024-02-07

我希望在使用 Ruby on Rails 的 globalize3 gem 时实现一个简单的搜索功能。由于模型的翻译存储在单独的表中,因此下面的代码不起作用,因为产品表中不再有 :name 字段。如何调整下面的代码以使搜索功能正确?

产品控制器.rb

 @products = Product.search(params[:search]).all

索引.html.erb

 <%= form_tag products_path, method: :get do %>   
   <%= text_field_tag :search, params[:search] %>
   <%= submit_tag "Search", name: nil %>      
 <% end %>

model

class Product < ActiveRecord::Base
  translates :name
  attr_accessible :name, :price, :released_at

  def self.search(search)
    if search
      where('name LIKE ?', "%#{search}%")
    else
      scoped
    end
  end
end

你很幸运,我最近解决了完全相同的问题!

幸运的是,答案很简单。您可以使用类方法with_translations https://github.com/svenfuchs/globalize3/blob/master/lib/globalize/active_record/class_methods.rb#L10包括一组给定语言环境的翻译。

这是代码:

def with_translations(*locales)
  locales = translated_locales if locales.empty?
  includes(:translations).with_locales(locales).with_required_attributes
end

将其包含在您的search method:

def self.search(search)
  if search
    with_translations.where('name LIKE ?', "%#{search}%")
  else
    with_translations
  end
end

应该可以做到这一点。

作为补充说明:您可以添加可选的locales参数到搜索方法并将其传递给with_translations可选择将搜索范围缩小到特定语言的术语,例如当前区域设置。

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

在 Rails 中的 Globalize3 表上进行简单搜索 的相关文章

随机推荐

  • iOS 15 safari 工具栏现在在元素内滚动时隐藏

    在 iOS 15 上 无论您有顶部还是底部工具栏 在元素内滚动都会导致窗口调整大小 工具栏消失 在 iOS 14 上 只有当主体滚动时才会发生这种情况 请参阅下面的 gif 注意 黄色区域是一个带有溢出滚动的 div 并且主体不滚动 iOS
  • 使用 JavaScript 截断文本并附加省略号

    如何截断字符串并附加省略号 我想截断类似的东西 this is a very long string to this is a ve function truncate input if input length gt 5 return i
  • 检查 Activity 是否正在从 Service 运行

    怎样才能一个Service检查其应用程序之一是否Activity正在前台运行 使用以下方法和您的包名称 如果您的任何活动位于前台 它将返回 true public boolean isForeground String myPackage
  • urlopen() gbk 页面时 Python 中的编码问题

    我的代码在这里 coding utf 8 if name main from urllib2 import urlopen url http iccna blog sohu com 164572951 html data urlopen u
  • java中pdf解析为文本

    我有一个阿拉伯语 PDF 我想使用 Java 将其解析为文本文档 我已经尝试了很多次 英语单词解析成功 但阿拉伯语单词解析失败 谁能推荐一个可以正确转换阿拉伯语单词的解决方案 我想到了几个图书馆 阿帕奇蒂卡 http tika apache
  • onChange 是一个延迟字符 - Hooks

    我是 React 和 Hooks 的新手 我创建了一个简单的搜索栏 用户可以在其中输入一些文本 然而 如果我console log之后的状态onChange 它总是落后一个字符 例如 如果我输入 披萨 console log鞋子 披萨 我的
  • 循环依赖——什么时候终止?

    我无法理解 python 是如何管理的imports 假设我有以下应用程序结构 application application py model init py user py 假设application py文件在创建数据库后导入模型模块
  • 使用 jQuery 将参数发送到 Java Server Pages (JSP)

    我想向 JSP 发送不同的参数 是否可以在 jQuery 中向 JSP 发送多个参数 因为jQuery是客户端 JSP是服务器端 告诉我 您可以通过ajax请求传递参数 例如 ajax type POST url userNameCheck
  • EventWaitHandle 是否有任何隐式 MemoryBarrier?

    我是这个网站的新手 所以如果我没有以可接受的方式发帖 请告诉我 我经常按照下面的示例编写一些代码 为了清楚起见 省略了诸如 Dispose 之类的内容 我的问题是 是否需要如图所示的挥发物 或者 ManualResetEvent Set 是
  • 双重提交 Cookie 和多个选项卡?

    The 双重提交cookie https www owasp org index php Cross Site Request Forgery 28CSRF 29 Prevention Cheat Sheet Double Submit C
  • 图像上方的文本 CSS Z 索引不起作用

    我试图强制文本位于图像上方 但是 它不想工作 我已经尝试在文本上设置 z index 100 在图像上设置 100 但它仍然不起作用 主要 HTML div class menu defaults menu overlay div clas
  • Windows 8 Metro 风格应用程序和窗口挂钩

    我对 window hooks 和 Windows 8 Metro 应用程序都很陌生 我想开发一个后台服务 流程 检查用户刚刚点击启动的 Metro 应用程序的 属性 例如播放音乐的应用程序 文本文档创建应用程序 根据找到的属性 激活其他应
  • 自定义 sbt 任务按标签运行测试

    我想做一些 sbt 自定义任务来按标签运行测试 scalatest 例如 现在我可以在 sbt 控制台中运行它 sbt test only n UnitTests 我想运行这个做类似的事情 sbt test unit or somethin
  • pexpect 发送光标移动

    如何使用 pexpect 发送光标移动 如上 下 左 右键 下面的示例是自动化 elink 它使用向上 向下键选择页面上的不同链接 from pexpect import spawn child spawn elinks http pyth
  • git:忽略*受*版本控制的文件

    A gitignorefile 允许忽略版本控制中的文件 我们有不同的情况 我们想在存储库中放置一些配置文件 这些文件需要根据每台机器进行更改 例如数据库访问信息 我们确实希望将它们作为占位符进行分发 因此我们将它们包含到存储库中 但是 稍
  • 正则表达式 - 贪婪量词[重复]

    这个问题在这里已经有答案了 我真的很纠结这个问题 import java util regex class Regex2 public static void main String args Pattern p Pattern compi
  • 数组索引越界异常[重复]

    这个问题在这里已经有答案了 一直在环顾四周 看看是否有什么可以帮助我 但我不太明白人们在回答什么 而我所理解的任何东西似乎都不能解决问题 所以基本上正如标题所说 我遇到了数组索引越界异常 但我不知道为什么 任何帮助是极大的赞赏 Code i
  • 如何实现高效的 WhenEach 来传输 IAsyncEnumerable 任务结果?

    我正在尝试使用以下提供的新工具更新我的工具集C 8 https learn microsoft com en us dotnet csharp whats new csharp 8 一种似乎特别有用的方法是Task WhenAll http
  • Jquery-UI 可排序列表与 Meteor 模板中的反应式更新配合不佳

    我正在尝试以 JQuery UI 中描述的方式实现可排序的对象列表http Differential com blog sortable lists in meteor using jquery ui http differential c
  • 在 Rails 中的 Globalize3 表上进行简单搜索

    我希望在使用 Ruby on Rails 的 globalize3 gem 时实现一个简单的搜索功能 由于模型的翻译存储在单独的表中 因此下面的代码不起作用 因为产品表中不再有 name 字段 如何调整下面的代码以使搜索功能正确 产品控制器