Wir entwickeln derzeit einen Filmsuchdienst und haben die asynchrone Kommunikation über Rails und Ajax implementiert. Nach ein paar Tagen der Sucht habe ich es endlich implementiert, also werde ich es aufzeichnen. Ich berührte jquery ein wenig, als ich Bewegungen wie Hamburgerknöpfe machte, aber es war mein erstes Mal, dass ich Ajax berührte, und ich blieb ein paar Tage lang stecken. (Es gab auch eine Beziehung, in der der Code nicht wiedergegeben wurde, weil der Server nicht neu gestartet wurde.)
-rails (5.2.4.1) -ruby (2.5.3)
Wenn Sie Rakuten API (im Fall von Rails) implementieren möchten, installieren Sie gem. Der Montagevorgang entfällt. Weitere Informationen finden Sie hier __ __ hier __
Geben Sie zunächst in posts_contriller die Aktion an, um den im Suchfeld eingegebenen Inhalt zu verarbeiten.
routes.rb
get 'search', to: 'posts#search' #Führen Sie eine Suchaktion aus, wenn Sie nach einem Schlüsselwort suchen
Suchformular
erb:search_from.html.erb
#Kürzung
<div class='content'>
<div id="search-box">
#url: search_Suchaktion mit Pfad abrufen
<%= form_with(url: search_path, method: :get) do |f| %>
<%= f.text_area :title, id: :title, placeholder: "Geben Sie das Schlüsselwort ein", style: "width: 200px;"%> #:Das Suchwort wird im Titel getroffen
<%= f.submit "Suche", id: "search_button"%> #Sucheワード記入ご自動SucheかSucheボタン後にSucheどちらでも
<%end%>
</div>
<h2>Suchergebnisse</h2>
<div id='item_list'>
#Sie können das Rendering teilweise mit, aber nach Ajax-Verarbeitung zurückgeben_list.html.Ich versuche erb anzuzeigen.
</div>
</div>
Suchergebnisansicht
erb:item_list.html.erb
<% items.each do |item| %>
<% if item[:title].present? %>
<div class="item">
<div class= "item-image">
<%= image_tag(item[:imageUrl], width: '55px') %>
</div>
<div class= "item-title">
<p><%= item[:title] %></p>
</div>
</div>
<% end %>
<% end %>
posts_controller.rb
class PostsController < ApplicationController
~ Abkürzung
def search
contents = render_to_string(partial: 'posts/item_list.html.erb', locals:{items: search_by_rakuten(params[:title])})
#Gibt den Inhalt an json zurück
render json: {contents: contents} #Wenn Sie es nicht hashen, wird es nicht gelesen
end
private
def search_by_rakuten(title)
items = [] #Methode aufrufen[]Leer lassen
if title.present?
results = RakutenWebService::Books::DVD.search(
title: title, #Suchfeldschlüsselwörter
booksGenreId: '003', #Bezeichnung des Film-DVD-Genres
hits: 10 #Erhalten Sie nur 10 Trefferinformationen
#Erhalten Sie Informationen, indem Sie Bedingungen angeben
)
results.each do |result|
#Hash die erfassten Informationen und geben Sie einen Wert in den Schlüssel ein
item = {
title: result['title'],
url: result['itemUrl'],
imageUrl: result['smallImageUrl'].gsub('?_ex=64x64', '')
}#Fügen Sie die Hash-Daten in ein Array ein
items << item
end
end
items
end
end
Ajax
post.js
$(function{
funtion search(title){
//Kürzung
$.ajax({
url: "/search",
type: "GET", //Greifen Sie mit get auf die Suchaktion zu
dataType: "json",
async: true,
data: { title: title }, //Suchparameter angeben(:title)
}).done(function (data) {
$("#item_list").css("display", "");
$("#item_list").html(data.contents); //render json:{contents: contents}Inhaltsanzeige von
});
}
})
Die Suchfunktion ist jetzt implementiert.
Mit dem Obigen kann die Suchfunktion implementiert werden und die gesuchten Informationen können erhalten werden. Ich habe vier oder fünf Tage gebraucht, um diese Funktion zu implementieren. Es machte mir klar, dass mein Json, Ajax und Ruby kein Wissen hatten, aber ich konnte die Großartigkeit der Meinungsverschiedenheitskommunikation erkennen. Wir werden uns weiterentwickeln.
Recommended Posts