Ruby on Rails6 Praktischer Leitfaden cp4 ~ cp6 [Memo]

Einführung

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.

Überblick

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]

Kapitel 5 Visuelles Design

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.

Kapitel 6 Fehlerseite

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
Vorlagenbeispiel (Teilauszug)

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

Extraktion des Fehlerbehandlungsmoduls

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.

Begrenzen Sie die Umgebung, in der der Code ausgeführt wird

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.

Fortsetzung

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]

Quelle zitieren

Recommended Posts

Ruby on Rails6 Praktischer Leitfaden cp13 ~ cp15 [Memo]
Ruby on Rails6 Praktischer Leitfaden cp7 ~ cp9 [Memo]
Ruby on Rails6 Praktischer Leitfaden cp4 ~ cp6 [Memo]
Ruby on Rails6 Praktischer Leitfaden cp10 ~ cp12 [Memo]
Ruby on Rails6 Praktischer Leitfaden cp16 ~ cp18 [Memo]
Ruby on Rails6 Praktischer Leitfaden [Erweiterungen] cp7 ~ cp9 [Memo]
Ruby on Rails6 Praktischer Leitfaden [Erweiterungen] cp10 ~ cp12 [Memo]
Ruby on Rails6 Praktischer Leitfaden [Erweiterungen] cp3 ~ cp6 [Memo]
Ruby on Rails 6.0-Umgebungskonstruktionsnotiz
Ruby on Rails Elementary
Ruby on Rails Grundlagen
Ruby On Rails Association
[Persönliches Memo] Ruby on Rails-Umgebungskonstruktion (Windows)
Ruby on Rails Lernrekord -2020.10.03
Portfolioerstellung Ruby on Rails
Ruby on Rails Lernrekord -2020.10.04
Ruby on Rails5 - Schnellübungshandbuch 5.2 Kompatibel Kapitel2
[Ruby on Rails] Debuck (bindend.pry)
Ruby on Rails Lernrekord -2020.10.05
Ruby on Rails Lernrekord -2020.10.09
Ruby on Rails lernen Rekord-2020.10.07 ②
Ruby on Rails5 - Schnellübungshandbuch 5.2 Kompatibel Kapitel3
Ruby on Rails lernen Rekord-2020.10.07 ①
Brechen Sie die Ruby on Rails-Migration ab
Ruby on Rails Lernrekord -2020.10.06
Zusammenfassung der Ruby on Rails-Validierung
Ruby on Rails Grundlegendes Memorandum
[Ruby on Rails] Leseversuch (: [],: Schlüssel)
Ruby on Rails-Variablen, konstante Zusammenfassung
Installation von Ruby + Rails unter Ubuntu 18.04 (rbenv)
[Ruby on Rails] Paging-Funktion eingeführt
Grundkenntnisse in Ruby on Rails
Progate Ruby on Rails5 Rückblick
Verwendung von Ruby on Rails
Ruby on Rails Japanisch-Englisch kompatibler i18n
(Ruby on Rails6) Gepostete Inhalte "löschen"
[Ruby on Rails] CSV-Ausgabefunktion
[Ruby on Rails] Erstellung der Bestätigungsseite
[Ruby on Rails] Implementierung der Kommentarfunktion
[Ruby on Rails] DM, Chat-Funktion
[Ruby on Rails] Praktische Hilfsmethode
[Ruby on Rails] Stoppen Sie "Looping bis ..."
[Ruby on Rails] Einführung der Anfangsdaten
[Ruby on Rails] Suchfunktion (nicht ausgewählt)
[Rails] Hinzufügen der Ruby On Rails-Kommentarfunktion
[Ruby on Rails] Erstellen eines Anfrageformulars
[Ruby on Rails] Test mit RSpec anzeigen
[Ruby on Rails] 1 Modell CRUD (Routing Main)
Ruby on Rails-Installationsmethode [Mac Edition]
Modell [Ruby on Rails], Befehl für Controller-Terminal
Befehl zum Erstellen / Löschen von Ruby on Rails-Modellen