[RUBY] Einbetten und Anzeigen von YouTube-Videos in Rails (Sie können die eingegebene URL auch durch Bearbeiten abrufen).

1. Übersicht

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.

1.1 YouTube-URL-Typen

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.

2. Implementierung

Autorenversion

  • ruby 2.5.1
  • rails 5.2.3
  • mysql 5.7

2.1 Vorbereitung

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. aa42578496e362131452b38405a24c75.png

2.2 Edelsteineinführung

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.

2.3 App erstellen

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.hamlundedit.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.

Referenzartikel

  • https://qiita.com/Kairi_Yasunnde/items/8e931a4670549ba8237e
  • https://qiita.com/yuichisan65/items/9356a2822fb37e51b3b4

Schließlich

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