Rails Search 返回所有 itens 而不是搜索一个

问题描述

我有一个包含个人图书馆的 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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...