创建个人博客(在文章的列表页,根据文章标题和文章内容实现搜索)

本文介绍了如何在RubyonRails应用中添加搜索表单,处理搜索请求并在视图中显示结果,包括在视图文件中嵌入表单、控制器中构造查询条件以及在列表页展示搜索结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 在视图文件增加搜索表单:

在文章列表页的视图文件中,增加一个搜索表单,包含一个文本搜索框和一个提交按钮

<%= form_tag articles_path, method: :get do %>
  <%= text_field_tag :title, params[:title], placeholder: "搜索标题" %>
  <%= text_field_tag :content, params[:content], placeholder: "搜索内容" %>
  <%= submit_tag "搜索" %>
<% end %>

上述代码中,使用form_tag方法生成一个表单,将表单关联到articles_path路由,并使用GET方法提交数据。文本框的name属性分别为:title和:content,用于与后端控制器进行参数传递。placeholder属性设置了文本框的占位符,方便用户输入搜索关键字。

例如:

 2. 在控制器中处理搜索请求:

在控制器的index action里面增加处理文章列表的请求。在index方法中,可以更具搜索表单提交的参数来构建查询条件,并将查询结果返回到视图中显示

def index
  @articles = Article.all
  @articles = @articles.where("title like ?", "%#{params[:title]}%") if params[:title].present?
  @articles = @articles.where("content like ?", "%#{params[:content]}%") if params[:content].present?
end

上述代码中,首先获取所有文章,然后根据搜索表单提交的参数来构建查询条件。如果搜索表单中的:title参数不为空,就使用where方法添加一个标题查询条件;如果搜索表单中的:content参数不为空,就使用where方法添加一个内容查询条件。最后,将查询结果赋值给@articles实例变量,用于在视图中显示搜索结果。

例如:

 3. 在视图中显示搜索结果:

在文章列表页的视图文件中,可以使用@article实例变量来显示搜索结果

<% @articles.each do |article| %>
  <div class="article">
    <h2><%= article.title %></h2>
    <p><%= article.content %></p>
  </div>
<% end %>

上述代码中,使用each方法遍历@articles实例变量中的所有文章,并将每篇文章的标题和内容显示在一个div元素中。

例如:

 注:我这边只显示标题和创建时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值