Der Autor dieses Artikels ist ein Anfänger, der gerade erst anfängt, Programmieren zu lernen. Ich würde mich freuen, wenn Sie auf Fehler hinweisen könnten.
Dieser Artikel ist eine persönliche Notiz von dem, was ich durch Lesen des Ruby on Rails 6 Practical Guide gelernt habe. Es scheint schwer zu lesen zu sein, da es auszugsweise und aufgegriffen ist. Entschuldigung. Dieses Buch hat auch eine Fortsetzung Erweiterung, und beide wurden zum Zeitpunkt des Schreibens des Artikels untersucht. Ich werde auch einen Artikel zur Überprüfung schreiben. Da es in 18 Kapitel unterteilt ist, werden wir es nach Überschriften unterteilen. Bis zu Kapitel 3 ist die Umgebungskonstruktion die Hauptaufgabe, daher überspringe ich sie.
Chapter4 RSpec
Was ist der Unterschied zwischen Überspringen und Ausstehen? [RSpec]
namespace
routes.rb
namespace :staff do
root "top#index"
end
Namespace ist eine Methode zum Festlegen des Namespace. Im obigen Beispiel wäre der Stammpfad / staff. Der Controller ist Staff :: TopController.
render
staff/top_controller.rb
def index
render action: "index"
end
Rendern ist eine Methode, die ein HTML-Dokument generiert. Renderaktion: "Index" ist optional.
staff/top_controller.rb
def index
end
Wenn Sie Rendering usw. verwenden, können Sie eine andere Vorlage als die der Aktion entsprechende verwenden. Dies wurde auch in der zweiten Hälfte dieses Buches verwendet.
present?
vorhanden? ist eine Ablehnung von leer? Eine von Rails hinzugefügte Instanzmethode der Object-Klasse.
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
Mit der Layoutmethode können Sie eine Methode zur Ermittlung des Layouts angeben. Im obigen Beispiel wird das Layout für jeden Namespace dynamisch umgeschaltet.
rescue_from
application_controller.rb
rescue_from Forbidden, with: :rescue403
Wenn dies in der Definition der ApplicationController-Klasse definiert ist und eine Ausnahme Forbidden (oder eine Ausnahme, die ein Nachkomme davon ist) in einer Aktion auftritt, wird die Aktion unterbrochen und die Verarbeitung an die Methode Rescue403 übertragen.
application_controller.rb
#Implementierungsbeispiel für die Methodenrettung403
private def rescue403(e)
@exception = e
render template: "errors/forbidden", status: 403
end
haml:forbidden.html.haml
- case @exception
- when ApplicationController::IpAddressRejected
"Ihre IP-Adresse(#{request.id})Nicht verfügbar von."
- else
"Sie haben keine Berechtigung zum Anzeigen der angegebenen Seite."
ActiveSupport::Concern Sie können einen Mechanismus namens ActiveSupport :: Concern verwenden, um einen Teil des Codes von einer Klasse in eine andere zu extrahieren.
concerns/error_handlers.rb
module ErrorHandlers
extend ActiveSupport::Concern
included do
rescue_from ApplicationController::Forbidden, with: rescue403
#Andere Codes weggelassen
end
private def rescue403(e)
@exception = e
render "errors/forbidden", status: 403
end
#Andere Codes weggelassen
end
Für Module, die im Anliegenverzeichnis abgelegt sind
extend ActiveSupport::Concern
Wird benötigt. Infolgedessen ist die enthaltene Methode verfügbar. Diese Methode verwendet einen Block, sodass der Code innerhalb des Blocks im Kontext der Klasse ausgewertet wird, die dieses Modul geladen hat.
Eine weitere Eigenschaft ist, dass, wenn Sie eine Klasse namens ClassMethods als Unterklasse dieses Moduls definieren, diese Methode als Klassenmethode der Klasse enthalten ist, die das Modul geladen hat, diesmal jedoch nicht verwendet wurde.
application_controller.rb
include ErrorHandlers if Rails.env.production?
Die einzuschließende Umgebung ist begrenzt, sodass der ursprüngliche Fehlerbildschirm außer in der Produktionsumgebung angezeigt wird.
Wir werden die URLs der folgenden Artikel einzeln hinzufügen. Ruby on Rails6 - Praktischer Leitfaden cp7 ~ cp9 [Memo] Ruby on Rails6 - Praktischer Leitfaden cp10 ~ cp12 [Hinweis] Ruby on Rails6 - Praktischer Leitfaden cp13 ~ cp15 [Memo] Ruby on Rails6 - Praktischer Leitfaden cp16 ~ cp18 [Memo] Ruby on Rails6 - Praktischer Leitfaden [Erweiterungen] cp3 ~ cp6 [Memo] Ruby on Rails6 - Praktischer Leitfaden [Erweiterungen] cp7 ~ cp9 [Memo] Ruby on Rails6 - Praktischer Leitfaden [Erweiterungen] cp10 ~ cp12 [Memo]
Recommended Posts