创建搜索功能以使用 'GET' 方法搜索 Sequel 数据库

Creating a search function to search a Sequel Databse using a 'GET' method

我创建了一个 index.erb 文件,在该文件中,我有一个搜索栏的代码:

<nav>
  <div class="nav-wrapper">
    <form>
      <div class="input-field">
        <input id="search" type="search" placeholder="Search..." required>
        <label for="search"><i class="mdi-action-search"></i></label>
        <i class="mdi-navigation-close"></i>
      </div>
    </form>
  </div>
</nav>

最终我想要这个搜索栏来搜索我的 Sequel 数据库。我想在我的 app.rb 文件中使用 GET 方法。但是,我有一些障碍。

第 1 部分 如何将文本(用户在我的搜索栏中键入的文本)保存到一个变量中,然后我可以在我的 GET 方法中使用该变量(在我的 app.rb 文件中)?换句话说,如何将用户输入的内容保存到搜索栏中?

第 2 部分 在我的 app.rb 文件中,调用什么 get 方法有关系吗?

第 3 部分 我想使用 .where() 方法搜索我的数据库。在我的 model.rb 文件中,我定义了一个 class Town。在那次迁移中,我收集了一组数据。我想搜索该数据。所以我猜我在 app.rb 文件中的代码应该是这样的 (?):

@towns = Town.where(:name => @variable_from_part1)

使用问题第 1 部分中的变量,我将如何搜索我的 Sequel 数据库?换句话说,我如何在数据库中搜索用户输入的内容,然后在我的页面上显示结果?

谢谢!

第 1 部分 您在 <input/> 字段中创建了一个 name 属性。所以它看起来像这样:

<input name="search" type="text" placeholder="Search..."/>

提交此输入的最基本方法是使用输入字段,其中 type=sumbit

<input type="submit" value="Search"/>

第 2 部分 将 GET 方法称为什么并不重要。您可以使用一种、两种等方法搜索数据库。一种方法是使用 get '/search' do(或类似的东西)将用户引导至带有搜索栏的网页。然后你可以让搜索栏 action 等于一个不同的根,比如 get '/' do。您也可以在一个 GET root 下完成所有操作。

第 3 部分 然后在 app.rb 文件中,在 GET 根 (get '/' do) 下,您将使用 params[:search] 来保存输入到输入字段中的文本。

get '/' do
    @towns = Town.where(:name => params[:search])
end