gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 07:49:49 27 4
gpt4 key购买 nike

我在 Rails 3 中使用 Ransack。

我的观点:

  <%= 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

我得到 first_name_or_last_name_or_company_or_full_name_cont is undefined

有没有一种快速的方法可以解决这个问题,而无需在我的用户表中为 full_name 添加另一列?

还有:

     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 模型中:

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

您可以查看 Ransack GitHub wiki到更多的例子。

关于ruby-on-rails - 使用全名搜索时,Gem Ransack 不会返回任何结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26890665/

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