问题描述
我有一个包含个人图书馆的 rails 应用程序,我有一个搜索功能,它开始总是返回数据库中的所有项目,而不仅仅是搜索到的项目。 每次搜索后的网址都是这样的,例如:
http://localhost:3000/users/user_id/books?search=Alquimia
但返回所有,而不仅仅是那个特定的...提前感谢您提供的所有帮助。
代码如下: (我会发布我尝试过的两种方法,第一种是使用 PGsearch)
第一次尝试
books_controller.rb
def index
if params[:term].present?
@books = Book.search_by_full_name(params[:term])
@books = policy_scope(Book)
else
@books = Book.all
@books = policy_scope(Book)
end
end
_book_search_bar.html.erb
<%= form_tag user_books_path(:user_id),method: :get,class: "search-bar" do %>
<%= text_field_tag 'term',params[:term],placeholder: "Enter book or author" %>
<br>
<br>
<%= submit_tag "SEARCH BOOK",class: "btn-main" %>
<% end %>
book.rb
class Book < ApplicationRecord
belongs_to :user
has_many :loans
has_one_attached :photo
validates :title,presence: true
validates :author,presence: true
include PgSearch::Model
pg_search_scope :search_by_full_name,:against => [:title,:author],using: {
tsearch: {
prefix: true
}
}
end
第二次尝试
books_controller.rb
def index
if params[:search]
@books = Book.where('name LIKE ?',"%#{params[:search]}%")
@books = policy_scope(Book)
else
@books = Book.all
@books = policy_scope(Book)
end
end
_book_search_bar.html.erb
<%= form_tag user_books_path(:user_id),method: :get do %>
2 <%= label_tag "Search for a book:" %>
3 <%= text_field_tag :search,params[:search] %>
4 <%= submit_tag 'Search',name: nil %>
5 <% end %>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)