gpt4 book ai didi

使用 Ransack Rails 4 搜索多个模型

转载 作者:行者123 更新时间:2023-12-01 23:49:06 26 4
gpt4 key购买 nike

我正在尝试弄清楚如何使用 Ransack 搜索多个模型。目标是在我的共享标题中包含搜索表单。我结合使用了他们的文档、一个旧的 rails-cast、SO 问题和一些 friend 与我分享的代码。现在我认为它有效,虽然我不确定,因为我无法在我的索引页面上显示结果。

首先,我创建了一个搜索 Controller :

class SearchController < ApplicationController  

def index
q = params[:q]
@items = Item.search(name_cont: q).result
@booths = Booth.search(name_cont: q).result
@users = User.search(name_cont: q).result
end
end

接下来,我将这段代码放在标题部分 (views/layouts/_header.html.erb):

<%= form_tag search_path, method: :get do %>
<%= text_field_tag :q, nil %>
<% end %>

我添加了一条路线:

get "search" => "search#index"

我的搜索 Controller 的 index.html.erb 是空的,我怀疑这是问题所在,但我不确定该放什么。当我尝试类似的事情时:

<%= @items %>
<%= @users %>
<%= @booths %>

这是我执行搜索时得到的输出:

#<Item::ActiveRecord_Relation:0x007fee61a1ba10> #<User::ActiveRecord_Relation:0x007fee61a32d28> #<Booth::ActiveRecord_Relation:0x007fee61a20790>

有人可以指导我解决方案吗?我不确定这是索引 View 问题、路由问题还是其他问题。在所有教程中,搜索字段和结果仅适用于一个模型,因此我对如何在多个模型中实现这一点感到有点困惑。

谢谢!

最佳答案

您得到的输出是正确的。每个变量都包含一个 ActiveRecord_Relation 对象,可以将其视为数组。通常你会做这样的事情:

<% @items.each do |item| %>
<%= item.name %> # or whatever
<% end %>
<% @users.each do |user| %>
# and so on

或者,您可以合并结果 @results = @items + @booths + @users 然后:

<% @results.each do |result| %>
# display the result
<% end %>

关于使用 Ransack Rails 4 搜索多个模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27512084/

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