[RUBY] Comment intégrer et afficher des vidéos youtube dans Rails (vous pouvez également obtenir l'URL saisie en modifiant)

1. Vue d'ensemble

Je voulais intégrer et afficher des vidéos youtube sur des rails, j'ai donc essayé de l'implémenter en me référant à divers articles. Cependant, je ne pouvais pas l'implémenter comme je l'avais envisagé selon l'article de référence. Après cela, j'ai répété des essais et des erreurs et j'ai découvert comment générer l'URL entrée sur l'écran d'édition sans aucun bogue, je vais donc décrire comment l'implémenter.

1.1 Types d'URL YouTube

Les vidéos Youtube sont identifiées par une chaîne de caractères à 11 chiffres. Si vous collez la chaîne de caractères à 11 chiffres dans l'URL pour l'incorporation sur youtube, la vidéo intégrée sera également affichée sur des rails.

https://www.youtube.com/watch?v=0CqFEDzDkIA&t
Identifiez la vidéo avec cette chaîne de caractères → → "0CqFEDzDkIA & t"

Cependant, il y a un gros écueil ici. Comme condition pour que l'URL ci-dessus soit générée, l'URL ci-dessus ne sera générée que lorsque la vidéo youtube commence à 0 seconde </ font>. Si cette condition n'est pas remplie, une URL plus longue sera générée, donc même si vous la créez conformément à Article de référence, la vidéo intégrée sera affichée. Il y aura un bug qui ne sera pas fait.

Si l'URL répond aux critères, elle sera lue correctement dans Article de référence.

** Si vous obtenez l'URL youtube par la méthode suivante, une URL plus longue que le code à 11 caractères pour l'identification vidéo sera générée **

- URL de la vidéo qui a arrêté la lecture de la vidéo --URL de la vidéo lisant la vidéo dans une situation particulière (Exemple: obtenez l'URL de l'écran de lecture de votre vidéo préférée, etc.) </ Font> (Il peut y en avoir d'autres, mais dans tous les cas l'URL sera générée dans le sens le plus long)

Sur la base de ceux-ci, nous expliquerons la configuration de l'implémentation.

2. Mise en œuvre

Version de l'auteur

  • ruby 2.5.1
  • rails 5.2.3
  • mysql 5.7

2.1 Préparation

Tout d'abord, nous allons créer un exemple d'application qui ne fait que publier des vidéos YouTube.

Fonctionnement du terminal


$ mkdir projects //Préparez votre propre annuaire
$ cd projects
$ mkdir sample_app
$ cd sample_app
$ $ rails new youtubetest -d mysql

Si vous souhaitez spécifier la version, entrez comme suit rails -5.2.3- new youtubetest -d mysql

$ rails s

Démarrez le serveur. Accédez à http: // localhost: 3000 pour voir si vous avez pu lancer le serveur. Si l'image habituelle apparaît, le démarrage est terminé. aa42578496e362131452b38405a24c75.png

2.2 Introduction aux gemmes

J'écris souvent en Haml, donc je vais vous présenter «gem'haml-rails».

gemfile


gem 'haml-rails'

Après l'installation, veuillez abaisser les rails ** lower </ font> ** et bundle install.

2.3 Créer une application

Décrivez le routage.

routes.rb


Rails.application.routes.draw do
  root to: 'products#index'
  resources :products, only: [:index, :new, :create,:edit ,:update, :destroy]
end

Créez un contrôleur.

Terminal


$ rails g controller products

Ajoutez ce qui suit au contrôleur de produits.

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

Créez un modèle.

Terminal


$ rails g model product

Ajoutez ce qui suit au fichier de migration

db/migrate/xxxxxxxxxxxxxx_create_products.rb


class CreatePosts < ActiveRecord::Migration[5.2]
  def change
    create_table :products do |t|
      t.text :name #ajouter à
      t.string :youtube_url #ajouter à
      t.timestamps
    end
  end
end

Faisons rails: db: migrate.

Terminal


$ rails db:migrate

** La préparation est terminée ** ** C'est le processus le plus important! !! ** **

Créez un fichier de vue pour l'écran supérieur. Veuillez saisir la commande suivante.

Terminal


$ touch app/views/products/index.html.haml
$ touch app/views/products/new.html.haml
$ touch app/views/products/edit.html.haml
* Veuillez taper dans l'ordre du haut

Créez un fichier de vue pour l'écran supérieur. Ajoutez le code suivant à ʻindex.html.haml`.

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"}
    

Le code ci-dessous est le code de base du code d'intégration. https://www.youtube.com/embed/ En ajoutant # {post.youtube_url [32..42]} après ce code, même les URL générées dans un état irrégulier peuvent être lues normalement.

Explication supplémentaire


 %iframe{src: "https://www.youtube.com/embed/#{product.youtube_url[32..42]}", Omis ci-dessous}
#Ajoutez le code ci-dessous
"#{product.youtube_url[32..42]}"
#Obtention d'une chaîne de caractères à 11 chiffres qui identifie la vidéo

Ensuite, créez une vue de l'écran de publication et de l'écran d'édition. Ajoutez le code suivant à new.html.haml et ʻedit.html.haml (Vous pouvez utiliser un modèle partiel dans ce processus)

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, "Nom"
        = form.text_field :name, placeholder: 'name'

      contents-group
        = form.label :youtube_url, "URL YouTube"
        = form.text_field :youtube_url, placeholder: 'youtube_url'
      = f.submit 'Publier'

** C'est la fin !! ** En ajoutant une petite description au code d'intégration, vous pouvez intégrer correctement la vidéo dans n'importe quel état de l'URL (limité à youtube), et vous pouvez lire la vidéo.

Article de référence

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

finalement

Ceci conclut l'explication de "Comment intégrer et afficher des vidéos YouTube dans Rails". Je vous serais reconnaissant si vous pouviez signaler des erreurs.

Merci d'avoir regardé jusqu'à la fin.

Recommended Posts