Lors de la création d'une application personnelle, implémentez une fonction de recherche afin que le contenu des articles publiés puisse être affiché par recherche.
Cette fois, nous ne passerons pas à la page en spécifiant: id, nous utiliserons donc collection pour définir le routage.
routes.rb
resources :posts do
get :search, on: :collection
resource :likes, only: [:create, :destroy] -Comme la mise en œuvre de la fonction
end
** Clause LIKE ** La clause LIKE peut rechercher une chaîne de caractères. Utilisé avec la méthode where.
Exemple d'exécution | Détails |
---|---|
where('title LIKE(?)', "a%") | Titres commençant par un |
where('title LIKE(?)', "%b") | Titres se terminant par b |
where('title LIKE(?)', "%c%") | Titres contenant c |
where('title LIKE(?)', "d_") | Titre à deux lettres commençant par d |
where('title LIKE(?)', "_e") | Titre à deux lettres se terminant par e |
app/models/post.rb
def self.search(search)
return Post.all unless search
Post.where('body LIKE(?)', "%#{search}%")
end
post_controller.rb
def search
@posts = Post.search(params[:keyword])
end
On suppose que vous faites un modèle partiel en utilisant la ** méthode de rendu **. ** post ** à droite de {post: post} est ** post ** en tant que variable dans chaque méthode, indiquant une instance de ** post **. Le ** post ** sur la gauche représente le nom de la variable dans le modèle partiel.
search.html.erb
<% @posts.each do |post| %>
<%= render partial: "post", locals: { post: post } %>
<% end %>
La mise en œuvre de la fonction de recherche s'est déroulée relativement facilement. Je vais implémenter d'autres fonctions et augmenter ce que je peux faire. Merci d'avoir regardé jusqu'au bout: sourire:
Recommended Posts