gpt4 book ai didi

ruby-on-rails - Rails 搜索表单,两种模式

转载 作者:数据小太阳 更新时间:2023-10-29 09:03:31 24 4
gpt4 key购买 nike

我正在尝试在 Rails 4 中实现一个搜索字段来查找两个模型背后的数据。我有两个 Controller :建筑物和房间,以及两个模型:建筑物和房间。一栋楼自然有很多房间,一个房间属于一栋楼,我已经在各自的模型中说明了这一点。

基本上,用户可以在搜索表单中输入建筑物或房间名称,它会返回包含建筑物或房间详细信息的响应。当然,建筑物需要有地址,房间也需要知道它在哪个建筑物中以及地址。因此,我需要根据搜索的实例显示不同的详细信息。两者都具有相同的字符串属性 name,因此这可以使事情变得更容易。

我没有找到有关如何实现此类搜索表单的相关示例。这是我目前在 views\buildings\index.html.erb 中的工作基本搜索,它只能搜索建筑物:

<%= form_tag({controller: "buildings", action: "show"}, method: "get", class: "nifty_form") do %>
<%= label_tag(:name, "Search for a building (later also rooms):") %>
<%= text_field_tag(:name) %>
<%= submit_tag("Search") %>
<% end %>

这是 controllers\buildings_controller.rb 中的 show 方法:

def show
@building = Building.where('lower(name) = ?', params[:name].downcase).first
end

这是它引用的路线:

get 'buildings/:id' => 'buildings#show'

感谢任何帮助!

最佳答案

我建议你在 buildings controller 的 index 方法中添加搜索代码,你可以做很多事情,但我推荐的是:

def index
#
if params.has_key?(:name)
@buildings = Building.joins(:rooms).
where([
'lower(buildings.name) like ? or lower(rooms.name) like ?',
"%#{params[:name].downcase}%",
"%#{params[:name].downcase}%"
])
else
# your normal code goes here.
end
end

您可以在其中包含您需要此类地址(是不同型号)的任何其他信息。

希望对您有所帮助,

PD:如有必要,您可以在 if block 中出现搜索时呈现不同的 View

render action: 'my_custom_view', status: :ok

关于ruby-on-rails - Rails 搜索表单,两种模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29519880/

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