ruby-on-rails - 高级搜索框不显示结果或连接到显示视图
问题描述
我对 Ruby on Rails 相当陌生,我正在尝试实现高级搜索。高级搜索是搜索书籍及其类别。
如果您需要更多信息,请告诉我。
我已经实现了高级搜索表单视图、新视图和显示视图。
但是当我尝试搜索书籍时,它不会显示搜索结果,也不会呈现搜索的显示视图。它而是为高级搜索呈现一个新的视图页面。
这是我的搜索控制器代码
class SearchesController < ApplicationController
def new
@search = Search.new
end
def create
@search = Search.create(search_params)
redirect_to @search
end
def show
@search = Search.find(params[:id])
end
private
def search_params
params.require(:search).permit(:keywords, :category)
end
end
这是我的搜索模型代码
class Search < ApplicationRecord
def search_books
books = Book.all
books = books.where(["name LIKE ?","%#{keywords}%"]) if
keywords.present?
books = books.where(["category LIKE ?",category]) if
category.present?
return books
end
end
这是我的搜索 _form.html.erb 代码
<%= form_with(model: search, local: true) do |form| %>
<div class="form-group">
<%= form.text_field :keywords, {placeholder: 'Keywords',
:class => 'form-control pb_height-50 reverse'} %>
</div>
<div class="form-group">
<%= form.text_field :category, {placeholder: 'Category',
:class => 'form-control pb_height-50 reverse'} %>
</div>
<div class="form-group">
<%= form.submit :class => 'btn btn-primary btn-lg btn-block
pb_btn-pill btn-shadow-blue', value: 'Search'%>
</div>
<% end %>
这是我的搜索 new.html.erb 代码
<% content_for :title, "New Search" %>
<section class="pb_cover_v3 overflow-hidden cover-bg-indigo cover-
bg-opacity text-left pb_gradient_v1 pb_slant-light menu-section"
id="section-home">
</section>
<section class="pb_section bg-light pb_slant-white pb_pb-250"
id="section-features">
<div class="container">
<div class="row align-items-center justify-content-center">
<div class="col-md-12 relative align-self-center">
<form action="/search" class="bg-white rounded pb_form_v1">
<h2 class="mb-4 mt-0 text-center">Advanced Search</h2>
<hr>
<%= render 'form', search: @search %>
<hr>
<%= link_to 'Back', books_path %>
</form>
</div>
</div>
</div>
</section>
这是我的搜索 show.html.erb 代码 <% content_for :title, "Search Result" %>
<section class="pb_cover_v3 overflow-hidden cover-bg-indigo
cover-bg-opacity text-left pb_gradient_v1 pb_slant-light menu-
section" id="section-home">
</section>
<section class="pb_section pb_slant-white pb_pb-250" id="section-
features">
<div class="container">
<div class="row titlerow">
<h1><%= Search Result %></h1>
<p><%= link_to 'Back', new_search_path %></p>
<% if @search.search_books.empty? %>
<p>No Records Found</p>
<% else%>
<% @search.search_books.each do |c| %>
<br>
<div class="div">
<h1><%= c.name %></h1>
<p>Category: <%=c.category %></p>
</div>
<% end %>
<% end %>
</div>
</div>
</section>
我需要一些关于如何在搜索的显示视图上显示搜索结果的帮助,而不是每次单击高级搜索的搜索按钮时高级搜索页面都会重新呈现新的搜索页面。我需要一种将高级搜索的显示视图连接到新的高级搜索页面的方法,以便它可以显示搜索结果。
谢谢你。
解决方案
我能够修复它。
在 new.html.erb 上
<section class="pb_section bg-light pb_slant-white pb_pb-250" id="section-features">
<div class="container">
<div class="row align-items-center justify-content-center">
<div class="col-md-12 relative align-self-center">
<form action="/search" class="bg-white rounded pb_form_v1">
<h2 class="mb-4 mt-0 text-center">Advanced Search</h2>
<hr>
<%= render 'form', search: @search %>
<hr>
<%= link_to 'Back', books_path %>
</form>
</div>
</div>
</div>
</section>
我只是将表单标签更改为div标签,并从表单标签中删除了action属性。
在这个过程中我学到了很多。
就这样。
我希望这有帮助
推荐阅读
- r - 如何根据数字而不是字符对行顺序进行排序?
- c++ - 指向 4 字节的 double 的指针如何指向 8 字节的 double?
- javascript - Vue子组件在第一页加载时不显示动态数据
- spring - 使用 liquibase 配置在每次启动时执行 sql 文件
- python-3.x - 我希望我的 Python 函数接受 numpy ndarrays
- service - 从工作人员服务项目创建迁移
- java - 从按钮操作运行方法的摆动问题
- python - 如何阅读日志元素以找到 5 分钟的间隔
- flutter - 如果需要,允许扩展小部件占用更多空间
- python - 综合清单;如何使用获取的信息?