[RUBY] Implementierung der Rails CRUD-Funktion ① (Neuzugang, diesmal Löschung)

Zweck dieses Artikels Dies ist das Verfahren zum Erstellen einer Webanwendung mit CRUD-Funktion unter Verwendung von Schienen. Es ist eine Seite (Vogel-Tweet), auf der Sie Bilder und Namen von Vögeln posten können.

Erstellen einer Rails-Anwendung

Geben Sie die Schienenversion 6.0.0 an. Geben Sie nach -d die zu verwendende Datenbank an (in diesem Fall MySQL).

rails _6.0.0_ new birdtweet -d mysql

Einstellungsänderung.

config/database.yml


...
#  encoding: utf8mb4
  encoding: utf8
...

DB-Erstellung

cd birdtweet
rails db:create

Gemfile bearbeiten Öffnen Sie die Gemfile direkt unter dem Projekt

Gemfile


# gem 'mysql2', '>= 0.4.4'
gem 'mysql2', '>= 0.5.3'
........
(Fazit der Datei)
gem 'pry-rails'

Aktualisieren Sie die Einstellungen im Terminal

bundle update

Modell erstellen Am Terminal
rails g model bird

Spalte hinzufügen

db/migrate/2020********create_birds.rb


...
create_table :birds do |t|
      t.string :name
      t.text :pic
      t.timestamps
end
...

Aktualisieren Sie Änderungen mit Befehlen!

rails db:migrate

Fügen Sie einige Daten in die Datenbank an der Konsole ein.

rails c
Bird.create(name: "Tsunomedori", pic: "https://cdn.pixabay.com/photo/2020/05/26/13/22/puffins-5223057_1280.jpg ")
Bird.create(name: "Kawasemi", pic: "https://cdn.pixabay.com/photo/2017/02/07/16/47/kingfisher-2046453_1280.jpg ")
exit

Controller erstellen Erstellen Sie einen Controller mit dem folgenden Befehl.
rails g controller birds

Es kann Plural sein oder nicht, und es kann verwirrend sein, Nur das Modell ist einzigartig!

Fluss von hier Der Ablauf beim Erstellen jeder Funktion ist nahezu gleich!

Zu route.rb hinzugefügt ↓ Links zu jeder Funktion in index.html.erb hinzugefügt (unerwarteter Index) ↓ Zu bird_controller.rb hinzugefügt ↓ Erstellen Sie die Funktion name.html.erb

Listenanzeigefunktion Es gibt sieben Aktionen in Schienen.
  • Index: Liste
  • show: Details
  • new: Übergang zum neuen Erstellungsbildschirm
  • create: Neue Daten speichern
  • edit: Übergang zum Bearbeitungsbildschirm
  • update: Aktualisiere die Änderungen
  • zerstören: Löschen

Wenn Sie nicht alle Funktionen verwenden möchten, geben Sie nur diejenigen an, die mit der einzigen Option verwendet werden sollen.

config/routes.rb


#Hinter Ressourcen steht der Plural des Modellnamens
  resources :birds, only: :index

app/controllers/birds_controller.rb


...
def index
    #Speichern Sie Bird-Modelldaten in Instanzvariablen.
    @birds = Bird.all
  end
...

Erstellen Sie die Datei index.html.erb Zeigen Sie alle Instanzvariablen in der Ansicht mit jeder Methode an.

rb:app/views/birds/index.html.erb


<% @birds.each do |bird| %>
<%= bird.name %>
<div style=
"background-image: url(<%= bird.pic %>); 
 background-position: center center;
 background-size: cover;
 width: 300px; 
 height: 300px;
 margin-bottom: 10px;
 ">
</div>
<%end%>

Es wurde wie folgt angezeigt! !! !! image.png

Neue Buchungsfunktion Der Fluss ist auch Routen → Controller → Ansicht, aber da Daten hinzugefügt (erstellt) werden, indem sie zum Buchungsbildschirm verschoben werden (neu), werden wir zweimal eine Reihe von Flüssen ausführen!

routes.rb


Rails.application.routes.draw do
  #Hinter Ressourcen steht der Plural des Modellnamens
  #Wenn es mehrere Aktionen gibt, werde ich sie in Form eines Arrays erstellen
  resources :birds, only: [:index, :new]
end

ruby:index.html.erb


<%=link_to 'Neuer Beitrag', new_bird_path, method: :get%>
...

image.png

birds_controller.rb


...
def new
  #Speichern Sie die Instanziierung des Bird-Modells in einer Instanzvariablen.
  @bird = Bird.new
end
...

Erstellen Sie new.html.erb

rb:app/views/birds/new.html.erb


<%#Selbst wenn Sie die URL des Übergangsziels nicht beschreiben, erfolgt der Übergang basierend auf dem in die Instanzvariable eingegebenen Modell.%>
<%=form_with(model: @bird, local: true) do |form| %>
  <%= form.text_field :name, placeholder: "Vogelname" %>
  <%= form.text_field :pic, placeholder: "Vogel Foto URL" %>
  <%= form.submit "Post" %>
<%end%>

http://localhost:3000/birds/new Sie können den Buchungsbildschirm sehen, wenn Sie darauf zugreifen! image.png

Als nächstes folgt die Funktion zum Registrieren der Eingabeinformationen.

routes.rb


Rails.application.routes.draw do
  #Hinter Ressourcen steht der Plural des Modellnamens
  #Wenn es mehrere Aktionen gibt, werde ich sie in Form eines Arrays erstellen
  resources :birds, only: [:index, :new, :create]
end

birds_controller.rb Die Daten werden in Form eines Hashs aus dem Formular gesendet.
Es ist gefährlich, alle Daten zu erhalten! </ b>
Obwohl Sie nur den Namen und die URL des Fotos benötigen, können Sie den Schlüssel der Anmeldeinformationen in böswilliger Absicht hinzufügen und die Anmeldeinformationen einer anderen Person ohne Erlaubnis ändern und übernehmen. Verwenden Sie daher den Parameter strong.
Unterhalb der Zeile, die privat beschreibt, handelt es sich um eine Methode, die nicht aus anderen Dateien aufgerufen werden kann. Der Vorteil ist, dass Sie weniger Dateien sehen können, wenn Sie mehr Methoden haben.

birds_controller.rb


...
  def create
    #Vogel definiert unter privat_Empfängt und speichert die von param angegebenen Parameter.
    Bird.create(bird_param)
  end

  private
  def bird_param
    # params.require(:Modellname).permit(:Spaltenname,:Spaltenname,......)
    params.require(:bird).permit(:name, :pic)
  end
...

create.html.erb create

rb:app/views/birds/create.html.erb


<h3>Posting abgeschlossen!</h3>
<a href="/birds">Auflisten</a>

image.png

image.png

Wenn Sie es so lassen, wie es ist, können Sie sich registrieren, ohne etwas einzugeben. Daher werde ich eine Beschreibung für die Validierungsprüfung schreiben.

app/models/birds.rb


class Bird < ApplicationRecord
  #Schreiben Sie den Spaltennamen, den Sie eingeben müssen.
  validates :name, presence: true
  validates :pic, presence: true
end

Sie können die Daten ab sofort nicht mehr registrieren! !!

Löschfunktion

routes.rb


...
resources :birds, only: [:index, :new, :create, :destroy]
...

Verwenden Sie zuerst den Befehl, um den Link zur Löschfunktion zu finden

rails routes

Wird besorgt. Dann wird die folgende Ausgabe ausgegeben. Wenn Sie dem Präfixwert "_path" hinzufügen, wird die im URI beschriebene URL ausgegeben. image.png

Dieses Mal wird es gelöscht. Achten Sie also auf die Zeile DELETE in Verb. Das Präfix ist "Vogel", daher können Sie es auf "Vogelpfad" setzen. Die Methode ist "DELETE" in "Verb", Sie können also einfach "delete" sagen. Geben Sie danach auch den Ausweis weiter!

index.html.erb


...
<%= bird.name %><%=link_to "Löschen", bird_path(bird.id), method: :delete%>
...

Der Link wird angezeigt. image.png

bird_controller.rb


...
  def destroy
    #Dieses Mal werde ich die extrahierten Daten nirgendwo hin senden, also@Nicht anhängen.
    bird = Bird.find(params[:id])
    bird.destroy
  end
...

destroy.html.erb


<a href="/birds">Listenbildschirm</a>

image.png image.png Papageientaucher wurde richtig entfernt!

Recommended Posts

Implementierung der Rails CRUD-Funktion ① (Neuzugang, diesmal Löschung)
Implementierung der Rails CRUD-Funktion ② (diesmal bearbeitet und detailliert)
Rails Grundgerüst für die Implementierung der CRUD-Funktion
Implementierung der Fuzzy-Suchfunktion für Schienen
[Rails] Implementierung der Tutorial-Funktion
[Rails] Implementierung einer ähnlichen Funktion
[Rails] Implementierung einer neuen Registrierungsfunktion im Assistentenformat mit devise
[Rails] Implementierung des logischen Löschens durch den Benutzer
[Rails] Implementierung der CSV-Importfunktion
[Rails] Asynchrone Implementierung der Like-Funktion
[Rails] Implementierung der Bildvorschau
[Rails] Implementierung der Benutzerrückzugsfunktion
[Rails] Implementierung der CSV-Exportfunktion
[Rails] Kommentarfunktion (Registrierung / Anzeige / Löschung)
[Rails] Implementierung der Couponfunktion (mit automatischer Löschfunktion mittels Stapelverarbeitung)
Implementierung der Funktionsfunktion [Rails] gem ancestry category
[Ruby on Rails] Implementierung der Kommentarfunktion
[Rails] Memo zur Implementierung der Kommentarfunktion
[Rails] Hinzufügen der Ruby On Rails-Kommentarfunktion
Schienen Hinzufügen einer einfachen Anmeldefunktion
Rails [Für Anfänger] Implementierung der Kommentarfunktion
[Ruby on Rails] Implementierung einer ähnlichen Funktion
[Ruby on Rails] Logisches Löschen (Auszahlungsfunktion)
[Rails] Implementierung der Suchfunktion mit Gem's Ransack
Implementierung der Ruby on Rails-Anmeldefunktion (Sitzung)
[Rails] Implementierung der Bildvergrößerungsfunktion mit Lightbox2
Ruby on Rails Implementierung der automatischen Mail-Sendefunktion