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.
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]
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.
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
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."
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.
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.
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]
Recommended Posts