gpt4 book ai didi

ruby-on-rails - 在Rails中的Globalize3表上简单搜索

转载 作者:行者123 更新时间:2023-12-04 16:40:26 24 4
gpt4 key购买 nike

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

产品_controller.rb

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

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

模型
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 来包含给定语言环境集的翻译。

这是代码:

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

将其包括在 search方法中:
def self.search(search)
if search
with_translations.where('name LIKE ?', "%#{search}%")
else
with_translations
end
end

那应该做。

作为补充说明:您可以在搜索方法中添加一个可选的 locales参数,并将其传递给 with_translations,以可选地将搜索范围缩小为特定语言(例如在当前语言环境中)的术语。

关于ruby-on-rails - 在Rails中的Globalize3表上简单搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12064756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com