Ich wollte YouTube-Videos einbetten und auf Schienen anzeigen, deshalb habe ich versucht, sie mithilfe verschiedener Artikel zu implementieren. Ich konnte es jedoch nicht so implementieren, wie ich es mir gemäß dem Referenzartikel vorgestellt hatte. Danach wiederholte ich Versuch und Irrtum und fand heraus, wie die eingegebene URL auf dem Bearbeitungsbildschirm ohne Fehler generiert werden kann. Daher werde ich beschreiben, wie sie implementiert wird.
Youtube-Videos sind durch eine 11-stellige Zeichenfolge gekennzeichnet. Wenn Sie die 11-stellige Zeichenfolge in die URL zum Einbetten auf YouTube einfügen, wird das eingebettete Video auch auf Schienen angezeigt.
https://www.youtube.com/watch?v=0CqFEDzDkIA&t
Identifizieren Sie das Video mit dieser Zeichenfolge → → "0CqFEDzDkIA & t"
Hier gibt es jedoch eine große Gefahr. Als Bedingung für die Generierung der oben genannten URL wird die oben genannte URL nur generiert, wenn das YouTube-Video ab 0 Sekunden </ font> startet. Wenn diese Bedingung nicht erfüllt ist, wird eine längere URL generiert. Selbst wenn Sie sie gemäß Referenzartikel erstellen, wird das eingebettete Video angezeigt. Es wird einen Fehler geben, der nicht behoben wird.
Wenn die URL die Kriterien erfüllt, wird sie in Referenzartikel korrekt wiedergegeben.
** Wenn du die YouTube-URL mit der folgenden Methode erhältst, wird eine URL generiert, die länger als der 11-stellige Code für die Videoidentifikation ist **
- URL des Videos, das die Wiedergabe des Videos beendet hat --URL des Videos, das das Video in einer besonderen Situation abspielt (Beispiel: Rufen Sie die URL vom Wiedergabebildschirm Ihres Lieblingsvideos usw. ab.) </ Font> (Es kann andere geben, aber in jedem Fall wird die URL in der längeren Richtung generiert)
Basierend auf diesen werden wir das Implementierungssetup erklären.
Zuerst erstellen wir eine Beispiel-App, die nur YouTube-Videos veröffentlicht.
Terminalbetrieb
$ mkdir projects //Bereiten Sie Ihr eigenes Verzeichnis vor
$ cd projects
$ mkdir sample_app
$ cd sample_app
$ $ rails new youtubetest -d mysql
Wenn Sie die Version angeben möchten, geben Sie Folgendes ein
rails -5.2.3- new youtubetest -d mysql
$ rails s
Starten Sie den Server. Gehen Sie zu http: // localhost: 3000, um zu sehen, ob Sie den Server starten konnten. Wenn das übliche Bild angezeigt wird, ist der Startvorgang abgeschlossen.
Ich schreibe oft in Haml, deshalb stelle ich "gem'haml-rail" vor.
gemfile
gem 'haml-rails'
Nach der Installation senken Sie bitte die Schienen ** die </ font> ** und die Bundle-Installation ab.
Beschreiben Sie das Routing.
routes.rb
Rails.application.routes.draw do
root to: 'products#index'
resources :products, only: [:index, :new, :create,:edit ,:update, :destroy]
end
Erstellen Sie einen Controller.
Terminal
$ rails g controller products
Fügen Sie dem Produktcontroller Folgendes hinzu.
class ProductsController < ApplicationController
def index
@products = Product.all
end
def new
@product = Product.new
end
def create
product.create(product_params)
redirect_to root_path
end
def destroy
product = Product.find(params[:id])
product.destroy
end
def edit
@product = Product.find(params[:id])
end
def update
product = Product.find(params[:id])
product.update(product_params)
end
private
def product_params
params.require(:product).permit(:name, :youtube_url)
end
end
Erstellen Sie ein Modell.
Terminal
$ rails g model product
Fügen Sie der Migrationsdatei Folgendes hinzu
db/migrate/xxxxxxxxxxxxxx_create_products.rb
class CreatePosts < ActiveRecord::Migration[5.2]
def change
create_table :products do |t|
t.text :name #hinzufügen
t.string :youtube_url #hinzufügen
t.timestamps
end
end
end
Lassen Sie uns Rails: db: migrate
machen.
Terminal
$ rails db:migrate
** Die Vorbereitung ist abgeschlossen ** ** Dies ist der wichtigste Prozess! !! ** **.
Erstellen Sie eine Ansichtsdatei für den oberen Bildschirm. Bitte geben Sie den folgenden Befehl ein.
Terminal
$ touch app/views/products/index.html.haml
$ touch app/views/products/new.html.haml
$ touch app/views/products/edit.html.haml
* Bitte geben Sie die Reihenfolge von oben ein
Erstellen Sie eine Ansichtsdatei für den oberen Bildschirm.
Fügen Sie den folgenden Code zu index.html.haml
hinzu.
ruby:index.html.haml
.contents
- @products.each do |product|
.content_post
= product.name
.content_post
%iframe{src: "https://www.youtube.com/embed/#{product.youtube_url[32..42]}",allow: "accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture", allowfullscreen: "", frameborder: "0", height: "315", width: "560"}
Der folgende Code ist der Basiscode für den Einbettungscode.
https://www.youtube.com/embed/
Durch Hinzufügen von "# {post.youtube_url [32..42]}" nach diesem Code kann sogar eine in einem unregelmäßigen Zustand generierte URL normal abgespielt werden.
Ergänzende Erklärung
%iframe{src: "https://www.youtube.com/embed/#{product.youtube_url[32..42]}", Unten weggelassen}
#Fügen Sie den folgenden Code hinzu
"#{product.youtube_url[32..42]}"
#Erhielt eine 11-stellige Zeichenfolge, die das Video identifiziert
Erstellen Sie als Nächstes eine Ansicht des Post-Bildschirms und des Bearbeitungsbildschirms.
Fügen Sie den folgenden Code zu new.html.hamlund
edit.html.haml` hinzu
(Es ist in Ordnung, in diesem Prozess eine Teilvorlage zu verwenden.)
ruby:new.html.haml&edit.html.haml
.new-contents
.new-contents__content
= form_with(model: @product, local: true) do |form|
contents-group
= form.label :name, "Name"
= form.text_field :name, placeholder: 'name'
contents-group
= form.label :youtube_url, "YouTube-URL"
= form.text_field :youtube_url, placeholder: 'youtube_url'
= f.submit 'Post'
** Das ist das Ende !! ** Durch Hinzufügen einer kleinen Beschreibung zum Einbettungscode können Sie das Video in jedem Status der URL (beschränkt auf YouTube) korrekt einbetten und das Video abspielen.
Damit ist die Erläuterung zu "Einbetten und Anzeigen von YouTube-Videos in Rails" abgeschlossen. Ich würde mich freuen, wenn Sie auf Fehler hinweisen könnten.
Danke, dass du bis zum Ende zugesehen hast.
Recommended Posts