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

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元素中。

例如:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/19345.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

海康视频插件VideoWebPlugin在vue中的实现

一,将js文件放在public文件下 二,在index中全局引入 三.在视频页面写方法,创建实例,初始化,我写的是1*4屏的 <template><!--视频窗口展示--><div idplayWnd classNameplayWnd refplayWnd styleleft: 0; bottom: 0;height: 902px;width: 60vw></div>&…

研究生阶段球形机器人水面运动部分研发项目总结文档

出现的问题 研发问题 存在闭门造车现象。闭门造车的特点就是每一步都是创新&#xff0c;但是这样的创新是没有意义的&#xff0c;因为实际上已经有人做出来了。闭门造车的后果&#xff0c;一是不管是否自己的尝试“如愿以偿”&#xff0c;都会耗费大量时间&#xff1b;二是由…

Spring JPA 实现动态SQL查询及分页

1.在持久层Service中创建EntityManager对象&#xff1b;PersistenceContext private EntityManager entityManager; 2.根据动态sql查询条目数/*** get total.*/ public Object getResultTotalBySql(String sql) {Query query entityManager.createNativeQuery(sql);return que…

Eureka 学习笔记2:EurekaClient

版本 awsVersion ‘1.11.277’ EurekaClient 接口实现了 LookupService 接口&#xff0c;拥有唯一的实现类 DiscoveryClient 类。 LookupService 接口提供以下功能&#xff1a; 获取注册表根据应用名称获取应用根据实例 id 获取实例信息 public interface LookupService<…

HTTP杂谈之Referer和Origin请求头再探

一 关于Referer和Origin的汇总 1) 知识是凌乱的,各位看官看个热闹即可2) 内容不断更新1、理解有盲区,需要及时纠正2、内容交叉有重复,需要适当删减3、扩展视野3) 以下内容都与Referer和Origin请求头有关联 nginx防盗链 HTTP杂谈之Referrer-Policy响应头 iframe标签referre…

物联网|可变参数的使用技巧|不一样的点灯实验|访问外设的寄存器|操作寄存器实现点灯|硬件编程的基本流程-学习笔记(11)

文章目录 可变参数的使用技巧第三阶段-初级实验Lesson5:不一样的点灯实验---学习I/O的输出 ☆点灯的电路图分析1 一起看看点灯的电路图Tip1:另一种点灯的电路Tip1:如何访问外设的寄存器2 STM32F407中操作GPIO的方法 通过直接操作寄存器实现点灯实验Tip1:硬件编程的基本流程 2代…

HTML5+CSS3小实例:带标题的3D多米诺人物卡片

实例:带标题的3D多米诺人物卡片 技术栈:HTML+CSS 效果: 源码: 【html】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" content…

【3】C++实现多进程、多线程

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言一、同步与互斥1、【thread】同步并发的方法(1)创建、终止、等待、分离线程的方法1.创建线程形式1:使用一个循环执行的函数创建一个线程形式2:…

【信号去噪】基于马氏距离和EDF统计(IEE-TSP)的基于小波的多元信号去噪方法研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Linux 终端生成二维码

1、安装qrencode [rootnode1 script]# yum -y install qrencode2、输出正常的 [rootnode1 aihuidi]# echo https://blog.csdn.net/weixin_43822878?t1|qrencode -o - -t utf83、输出彩色的 [rootnode1 aihuidi]# qrencode -t utf8 -s 1 https://blog.csdn.net/weixin_4382…

bash shell 杂记(4)-shell常用的几种逻辑判断与运算

严格意义上讲,本章没有多少新意,都是一些经常使用的东西,写这些的目的是记录以下,想用而想不起来的时候可以在这里找找看。 常用算数运算 我们一般使用两种方式 let 和 $(()) count=1 forlinx@ubuntu:~/test$ max=2 forlinx@ubuntu:~/test$ count=$((count+5+max*2)) fo…

Ubuntu 22.04 LTS 安装nvidia-docker NVIDIA Container Toolkit

安装docker sudo apt install docker.io docker info yeqiangyeqiang-MS-7B23:~$ sudo docker info Client:Context: defaultDebug Mode: falseServer:Containers: 12Running: 0Paused: 0Stopped: 12Images: 67Server Version: 20.10.21Storage Driver: overlay2Backing …

魔法上网端口号被占用通过端口号找到进程并且杀掉进程随笔

Windows11系统由于魔法上网被异常关闭导致再次启动的时候报出端口号被占用问题记录以前忘记的通过端口杀掉进程相关操作。 在命令行&#xff08;winr,输入cmd&#xff09;中输入: netstat -ano 可以看到本机正在使用的ip地址和端口号如图&#xff1a; 在命令行&#xff08;wi…

算法题--找规律(构建乘积数组、剪绳子、圆圈中最后剩下的数字)

目录 找规律 构建乘积数组 原题链接 解析 核心思想 答案 剪绳子 原题链接 解析 核心思想 答案 圆圈中最后剩下的数字 原题链接 解析 核心思想 答案 找规律 需要通过列举多个示例&#xff0c;从多个示例的输入到输出中得到规律去普遍化。 构建乘积数组 给定…

【娱乐圈明星知识图谱2】信息抽取

目录 1. 项目介绍 2. 信息抽取介绍 3. ChatGPT 信息抽取代码实战 4. 信息抽取主逻辑 5. 项目源码 1. 项目介绍 利用爬虫项目中爬取的大量信息 【娱乐圈明星知识图谱1】百科爬虫_Encarta1993的博客-CSDN博客娱乐圈明星知识图谱百度百科爬虫百度百科爬虫百度百科爬虫百度百…

Ansible的脚本——playbook剧本

Ansible的脚本——playbook剧本 一、Ansible playbook简介1、playbook格式2、playbook组成部分 二、示例三、Templates模块四、tags模块五、Roles模块 一、Ansible playbook简介 playbooks是 一个不同于使用Ansible命令行执行方式的模式&#xff0c;其功能更强大灵活。简单来说…

redisson分布式锁学习

什么是分布式锁? 当有多个线程并发访问同一共享数据时,如果多个线程同时都去修改这个共享数据,且修改操作不是原子操作,就很有可能出现线程安全问题&#xff0c;而产生线程安全问题的根本原因是缺乏对共享数据访问的同步和互斥。 为了解决这个问题&#xff0c;通常我们的做法…

Rust: error: failed to run custom build command for `openssl-sys v0.9.71`

error: failed to run custom build command for openssl-sys v0.9.71 解决 windows &#xff1a; openssl 不要选Light版 设置环境变量 cmd: set OPENSSL_DIR“C:\Program Files\OpenSSL-Win64” OPENSSL_DIR&#xff1a;C:\Program Files\OpenSSL-Win64 linux&#xff1a…

java基础四-String/StringBuffer/StringBuilder区别

String 和 StringBuffer、StringBuilder 的区别在于 String 声明的是不可变的对象&#xff0c;每次操作都会生成新的 String 对象&#xff0c;然后将指针指向新的 String 对象&#xff0c;而 StringBuffer、StringBuilder 可以在原有对象的基础上进行操作&#xff0c;所以在经常…

【Golang 接口自动化07】struct转map的三种方式

目录 背景 struct转map 使用json模块 使用reflect模块 使用第三方库 测试 总结 资料获取方法 背景 我们在前面介绍过怎么使用net/http发送json或者map数据&#xff0c;那么它能不能直接发送结构体数据呢&#xff1f;我们今天一起来学习结构体struct转map的三种方法&am…