Ruby on Rails6 Guide pratique cp4 ~ cp6 [Mémo]

introduction

L'auteur de cet article est un débutant qui commence à peine à apprendre la programmation. Je vous serais reconnaissant de bien vouloir signaler les erreurs.

Aperçu

Cet article est un mémo personnel de ce que j'ai appris en lisant le Guide pratique de Ruby on Rails 6. Il semble difficile à lire car il est extrait et repris. Excusez-moi. Ce livre a également une suite Extension, et les deux ont été étudiés au stade de la rédaction de l'article. J'écrirai également un article pour examen. Puisqu'il est divisé en 18 chapitres, nous le diviserons par titre. Jusqu'au chapitre 3, la construction de l'environnement est la principale, donc je l'ai sauté.

Chapter4 RSpec

Quelle est la différence entre ignorer et en attente? [RSpec]

Chapitre5 Conception visuelle

namespace

routes.rb


namespace :staff do
  root "top#index"
end

namespace est une méthode pour définir l'espace de noms. Dans l'exemple ci-dessus, le chemin racine serait / staff. Le contrôleur sera Staff :: TopController.

render

staff/top_controller.rb


  def index
    render action: "index"
  end

render est une méthode qui génère un document HTML. action de rendu: "index" est facultatif.

staff/top_controller.rb


  def index
  end

Si vous utilisez le rendu etc., vous pouvez utiliser un modèle autre que celui correspondant à l'action. Cela a également été utilisé dans la seconde moitié de ce livre.

present?

présent? est un refus de blanc?. Une méthode d'instance de la classe Object ajoutée par Rails.

layout

application_controller.rb


class ApplicationController < ActionController::Base
  layout :set_layout

  private def set_layout
    if params[:controller].match(%r{\A(staff|admin|customer)/})
      Regexp.last_match[1]
    else
      "customer"
    end
  end
end

Vous pouvez spécifier une méthode pour déterminer la disposition avec la méthode de disposition. Dans l'exemple ci-dessus, la disposition est commutée dynamiquement pour chaque espace de noms.

Page d'erreur du chapitre 6

rescue_from

application_controller.rb


rescue_from Forbidden, with: :rescue403

Si cela est défini dans la définition de la classe ApplicationController, lorsqu'une exception Forbidden (ou une exception qui en est un descendant) se produit dans une action, l'action est interrompue et le traitement est transféré vers la méthode rescue403.

application_controller.rb


#Exemple d'implémentation de la méthode rescue403
private def rescue403(e)
  @exception = e
  render template: "errors/forbidden", status: 403
end
Exemple de modèle (extrait partiel)

haml:forbidden.html.haml


- case @exception
- when ApplicationController::IpAddressRejected
  "Votre adresse IP(#{request.id})Non disponible à partir de."
- else
  "Vous n'êtes pas autorisé à afficher la page spécifiée."

Extraction du module de gestion des erreurs

ActiveSupport::Concern Vous pouvez utiliser un mécanisme appelé ActiveSupport :: Concern pour extraire une partie du code d'une classe dans une autre.

concerns/error_handlers.rb


module ErrorHandlers
  extend ActiveSupport::Concern

  included do
    rescue_from ApplicationController::Forbidden, with: rescue403
    #Autres codes omis
  end

  private def rescue403(e)
    @exception = e
    render "errors/forbidden", status: 403
  end
  #Autres codes omis
end

Pour les modules placés dans le répertoire des préoccupations

extend ActiveSupport::Concern

Est requis. En conséquence, la méthode incluse est disponible. Cette méthode prend un bloc afin que le code à l'intérieur du bloc soit évalué dans le contexte de la classe qui a chargé ce module.

Une autre propriété est que si vous définissez une classe appelée ClassMethods en tant que sous-classe de ce module, cette méthode sera incluse en tant que méthode de classe de la classe qui a chargé le module, mais cette fois elle n'a pas été utilisée.

Limiter l'environnement dans lequel le code est exécuté

application_controller.rb


include ErrorHandlers if Rails.env.production?

L'environnement à inclure est limité de sorte que l'écran d'erreur d'origine s'affiche sauf dans l'environnement de production.

A continué

Nous ajouterons les URL des articles suivants un par un. Guide pratique Ruby on Rails6 cp7 ~ cp9 [Memo] Guide pratique Ruby on Rails6 cp10 ~ cp12 [Memo] Guide pratique Ruby on Rails6 cp13 ~ cp15 [Memo] Guide pratique Ruby on Rails6 cp16 ~ cp18 [Memo] Ruby on Rails6 Practical Guide [Extensions] cp3 ~ cp6 [Memo] Ruby on Rails6 Practical Guide [Extensions] cp7 ~ cp9 [Memo] Ruby on Rails6 Practical Guide [Extensions] cp10 ~ cp12 [Memo]

Source du devis

Recommended Posts

Ruby on Rails6 Guide pratique cp13 ~ cp15 [Mémo]
Ruby on Rails6 Guide pratique cp7 ~ cp9 [Mémo]
Ruby on Rails6 Guide pratique cp4 ~ cp6 [Mémo]
Ruby on Rails6 Guide pratique cp10 ~ cp12 [Memo]
Ruby on Rails6 Guide pratique cp16 ~ cp18 [Mémo]
Ruby on Rails6 Guide pratique [Extensions] cp7 ~ cp9 [Mémo]
Guide pratique Ruby on Rails6 [Extensions] cp10 ~ cp12 [Memo]
Ruby on Rails6 Guide pratique [Extensions] cp3 ~ cp6 [Mémo]
Mémo de construction de l'environnement Ruby on Rails 6.0
Ruby on Rails élémentaire
Principes de base de Ruby on Rails
Association Ruby On Rails
[Note personnelle] Construction de l'environnement Ruby on Rails (Windows)
Record d'apprentissage de Ruby on rails -2020.10.03
Création de portfolio Ruby on Rails
Record d'apprentissage Ruby on rails -2020.10.04
Ruby on Rails5 Guide pratique d'apprentissage rapide 5.2 Chapitre 2 compatible
[Ruby on Rails] Debuck (binding.pry)
Record d'apprentissage de Ruby on rails -2020.10.05
Record d'apprentissage de Ruby on rails -2020.10.09
Record d'apprentissage Ruby on rails-2020.10.07 ②
Ruby on Rails5 Guide pratique d'apprentissage rapide 5.2 Chapitre compatible3
Record d'apprentissage Ruby on rails-2020.10.07 ①
Annuler la migration de Ruby on Rails
Record d'apprentissage de Ruby on rails -2020.10.06
Résumé de la validation Ruby on Rails
Mémorandum de base Ruby on Rails
[Ruby on Rails] Read try (: [] ,: key)
Variables Ruby on Rails, résumé constant
Installation de Ruby + Rails sur Ubuntu 18.04 (rbenv)
[Ruby on Rails] Introduction de la fonction de pagination
Connaissance de base de Ruby on Rails
Progatez Ruby on Rails
Comment utiliser Ruby on Rails
Ruby on Rails compatible japonais-anglais i18n
(Ruby on Rails6) "Effacer" le contenu publié
[Ruby on Rails] Fonction de sortie CSV
[Ruby on Rails] Création de la page de confirmation
[Ruby on Rails] Implémentation de la fonction de commentaire
[Ruby on Rails] DM, fonction de chat
[Ruby on Rails] Méthode d'aide pratique
[Ruby on Rails] Arrêtez de "boucler jusqu'à ce que ..."
[Ruby on Rails] Introduction des données initiales
[Ruby on Rails] Fonction de recherche (non sélectionnée)
[Rails] Ajout de la fonction de commentaire Ruby On Rails
[Ruby on Rails] Création d'un formulaire de demande
[Ruby on Rails] Afficher le test avec RSpec
[Ruby on Rails] 1 modèle CRUD (routage principal)
Méthode d'installation de Ruby on Rails [édition Mac]
Modèle [Ruby on Rails], commande de terminal de contrôleur
Commande de création / suppression de modèle Ruby on Rails