[RUBY] Schienen-Tutorial Kapitel 10

Einführung

Ich werde den Prozess der Weiterentwicklung des Rails-Tutorials selbst veröffentlichen.

Es berührt Wörter, die ich dabei nicht verstanden habe, und hat Fehler blockiert.

Bitte weisen Sie auf Fehler hin, da diese auf persönlichem Lernen beruhen.

Da dies mein erster Beitrag ist, denke ich, dass es viele Orte gibt, die schwer zu lesen sind, aber bitte verzeihen Sie mir.

Kapitel 10 Benutzer aktualisieren / anzeigen / löschen

10.1.1 Formular bearbeiten

Übung 2

ruby:app/views/users/_form.html.erb


#Listing 10:.5:Teilweise für neue und bearbeitete Formulare
<%= form_with(model: @user, local: true) do |f| %>
  <%= render 'shared/error_messages', object: @user %>

  <%= f.label :name %>
  <%= f.text_field :name, class: 'form-control' %>

  <%= f.label :email %>
  <%= f.email_field :email, class: 'form-control' %>

  <%= f.label :password %>
  <%= f.password_field :password, class: 'form-control' %>

  <%= f.label :password_confirmation %>
  <%= f.password_field :password_confirmation, class: 'form-control' %>

  <%= f.submit yield(:button_text), class: "btn btn-primary" %>
<% end %>

Vielleicht

object: @user

Wurde hinzugefügt ... Ich denke, Sie geben wahrscheinlich ein Objekt an, das an shared / error_messages übergeben werden soll shared / error_messages ist wie folgt

ruby:app/views/shared/_error_messages.html.erb


<% if @user.errors.any? %>
  <div id="error_explanation">
    <div class="alert alert-danger">
      The form contains <%= pluralize(@user.errors.count, "error") %>.
    </div>
    <ul>
    <% @user.errors.full_messages.each do |msg| %>
      <li><%= msg %></li>
    <% end %>
    </ul>
  </div>
<% end %>

Ich denke nicht, dass es notwendig ist, weil ich das @ user-Objekt angegeben habe, aber ...

Referenz https://teratail.com/questions/112178

Ebenfalls,

<%= f.label :password_confirmation, "Confirmation" %>

Das zweite Argument von ist weg ...

Ich hätte erwarten können, dass das zweite Argument der Text des Etiketts ist, aber ich habe es für alle Fälle nachgeschlagen.

Referenz https://teratail.com/questions/112172

Der Text der Beschriftung wird geändert, da das zweite Argument nicht mehr angegeben wird. Es wird als Passwortbestätigung aus Bestätigung angezeigt.

Ich verstehe beide Bedeutungen, aber warum wurde es stillschweigend behoben?

10.2.3 Freundliche Weiterleitung

Q. Was ist ein Anforderungsobjekt? A. request.original_url Gibt die aktuelle Anforderungs-URL zurück request.get? Gibt true zurück, wenn die HTTP-Methode GET ist

Referenz https://railsguides.jp/action_controller_overview.html#request%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88

10.3.2 Beispielbenutzer

ein Problem ist aufgetreten !! Ich erhalte eine Fehlermeldung, wenn ich Rails db: migrate: reset ausführe

Permission denied @ apply2files - C:/environment/sample_app/db/development.sqlite3
Couldn't drop database 'db/development.sqlite3'
rails aborted!
Errno::EACCES: Permission denied @ apply2files - C:/environment/sample_app/db/development.sqlite3
bin/rails:4:in `require'
bin/rails:4:in `<main>'
Tasks: TOP => db:drop:_unsafe
(See full trace by running task with --trace)

Ich habe es durch Bezugnahme auf diesen Artikel gelöst. https://qiita.com/Toshiki23/items/f366504844fd22ad87d9

Ich habe es vorher als Referenz benutzt. Es scheint, dass Windows die Datei, auf die es zugreift, nicht löschen kann.

10.3.3 Page Nation

User.paginate(page: 1)

paginieren nimmt Wert Seite Nummer mit Schlüssel: Seite User.paginate ruft einen Datenblock (standardmäßig 30) aus der Datenbank basierend auf dem Parameter: page ab Wenn Sie den obigen Befehl auf der Konsole ausführen, wird das Objekt mit der Seitennummer 1 ausgegeben (die Ausgabe ist 11, jedoch aufgrund der Konsolenbeschränkung von Active Record selbst. Sie können diese Einschränkung umgehen, indem Sie die Längenmethode aufrufen).

@users = User.paginate(page: params[:page])

Wenn params [: page]) 1 ist, werden 1 bis 30 Benutzer abgerufen, und wenn params [: page]) 2 ist, werden 31 bis 60 Benutzer abgerufen und @users zugewiesen. Übrigens, wenn die Seite Null ist, gibt paginate einfach die erste Seite zurück.

10.3.5 Teilweise Umgestaltung

ruby:app/views/users/index.html.erb


<% provide(:title, 'All users') %>
<h1>All users</h1>

<%= will_paginate %>

<ul class="users">
  <% @users.each do |user| %>
    <%= render user %>
  <% end %>
</ul>

<%= will_paginate %>

ruby:app/views/users/_user.html.erb


<li>
  <%= gravatar_for user, size: 50 %>
  <%= link_to user.name, user %>
</li>

Weiteres Refactoring.

ruby:app/views/users/index.html.erb


<% provide(:title, 'All users') %>
<h1>All users</h1>

<%= will_paginate %>

<ul class="users">
  <%= render @users %>
</ul>

<%= will_paginate %>

Rails errät @users als Liste von Benutzerobjekten. Wenn Sie eine Sammlung von Benutzern angeben und aufrufen, listet Rails außerdem automatisch die Sammlungen von Benutzern auf und gibt jeden Benutzer als Teil _user.html.erb aus. (Schienen-Tutorial Zitiert aus Kapitel 10)

Eine weitere schwierige Auslassung für Anfänger ... Meinen Sie damit, eine Sammlung zu übergeben, dh so etwas wie mehrere Daten?

Ich verstehe, dass es weggelassen werden kann, aber dann in _user.html.erb

ruby:app/views/users/_user.html.erb


<li>
  <%= gravatar_for user, size: 50 %>
  <%= link_to user.name, user %>
</li>

Ist es in Ordnung, dass der von jeder Methode erstellte variable Benutzer unverändert bleibt, und wenn ja, wie heißt der variable Benutzer?

Kann der Variablenname etwas sein? Ich habe den Namen geändert und getestet.

ruby:app/views/users/_user.html.erb


<li>
  <%= gravatar_for aaa, size: 50 %>
  <%= link_to aaa.name, user %>
</li>

Ergebnis Error.

undefined local variable or method `aaa' 

Die Variable aaa ist nicht definiert.

Was kann bisher erraten werden (1) Wird das vom Rendern übergebene Objekt automatisch als Singularform festgelegt? (2) Da es sich um ein Objekt der Benutzerklasse handelt, wird es automatisch mit demselben Namen festgelegt?

Als Test

app/controllers/users_controller.rb


def index
  @aaas = User.paginate(page: params[:page])
end

ruby:app/views/users/index.html.erb


<% provide(:title, 'All users') %>
<h1>All users</h1>

<%= will_paginate %>

<ul class="users">
  <%= render @aaas %>
</ul>

<%= will_paginate %>

Ergebnis

ActionView::Template::Error: The @users variable appears to be empty. Did you forget to pass the collection object for will_paginate?

Die Variable @users ist leer. Haben Sie vergessen, das Sammlungsobjekt an will_paginate zu übergeben? Wurde auch gesehen.

Sollte der Variablenname des Sammlungsobjekts also @users sein?

Und Sie müssten es an will_paginete (ein Sammlungsobjekt namens @users) übergeben ... vielleicht ...

Verfügt Rails über eine Einstellung, die das Sammlungsobjekt des Benutzerobjekts auf verschiedene Weise interpretiert, indem es als Benutzer benannt wird (das Sammlungsobjekt ist eine Pluralform eines Klassenobjekts)?

Wenn der Variablenname Benutzer ist, kann er auf diese Weise bequem die Auflistung automatisch auflisten.

ruby:app/views/users/_user.html.erb


<li>
  <%= gravatar_for user, size: 50 %>
  <%= link_to user.name, user %>
</li>

Muss ich das tun? Ich vermute, aber ...

Natürlich wird es nur dann unterschiedlich interpretiert, wenn Sie nach den Regeln dafür schreiben.

Am Ende

Diesmal war es ein Kapitel, das unter Refactoring litt. Ich habe einige vage Teile hinterlassen, daher möchte ich mehrmals darauf zurückblicken und mit dem Lernen fortfahren, damit ich es klar verstehen kann.

Recommended Posts

Schienen-Tutorial Kapitel 6
Schienen-Tutorial Kapitel 1
Schienen-Tutorial Kapitel 7
Schienen-Tutorial Kapitel 5
Schienen-Tutorial Kapitel 10
Schienen-Tutorial Kapitel 9
Schienen-Tutorial Kapitel 8
Rails Tutorial Kapitel 3 Lernen
Rails Tutorial Memorandum (Kapitel 3, 3.1)
Rails Tutorial Kapitel 4 Lernen
Rails Tutorial Kapitel 1 Lernen
Rails Tutorial Kapitel 2 Lernen
Schienen Tutry
Schienen Tutorial
Schienen Tutry
Deshalb habe ich dieses Mal die Methode "Verknüpfen des Inhalts des Verzeichnisses" übernommen. Ich denke, es wird je nach Zeit und Fall richtig verwendet. Tutorial zu Linux, ln, Linux-Befehlsschienen
Schienen Tutry
Schienen Tutorial
Schienen Tutorial
[Rails Tutorial Kapitel 4] Ruby mit Rails-Geschmack
Rails Tutorial Test
[Rails Tutorial Kapitel 5] Erstellen Sie ein Layout
Rails Tutorial Memorandum 2
Tutorial zum Kauen der Schienen [Kapitel 2 Spielzeuganwendung]
[Anfänger] Rails Tutorial
Rails Tutorial (4. Ausgabe) Memo Kapitel 6
Rails Tutorial 6. Ausgabe Lernzusammenfassung Kapitel 10
Rails Tutorial 6. Ausgabe Lernzusammenfassung Kapitel 4
Rails Tutorial 6. Ausgabe Lernzusammenfassung Kapitel 9
Rails Tutorial 6. Ausgabe Lernzusammenfassung Kapitel 6
Rails Tutorial 6. Ausgabe Lernzusammenfassung Kapitel 5
Rails Tutorial 6. Ausgabe Lernzusammenfassung Kapitel 2
Rails Tutorial Kapitel 0: Vorbereitende Grundkenntnisse 5
Rails Tutorial 6. Ausgabe Lernzusammenfassung Kapitel 3
Rails Tutorial 6. Ausgabe Lernzusammenfassung Kapitel 8
Kapitel 4 Rails Flavoured Ruby
Schienen Tutorial Cheet Sheet
Schienen Tutorial Fighting Record III
Rails Tutorial Kapitel 1 Von Null bis Bereitstellung [Try]
Kauen der Schienen Tutorial [Kapitel 3 Erstellen fast statischer Seiten]
Beheben Sie Gem :: FilePermissionError, wenn Sie Gem Install Rails ausführen (Rails Tutorial Kapitel 1).
11.1 AccountActivations-Ressource: Rails Tutorial Memorandum-Kapitel 11
Rails Tutorial Records und Memorandum # 0
Ich habe Rails Anfänger ausprobiert [Kapitel 1]
Rails Tutorial 4. Ausgabe: Kapitel 1 Von Null bis Bereitstellung
Beheben Sie ActiveRecord :: NoDatabaseError, wenn Sie einen Rails-Test durchführen (Rails-Tutorial, Kapitel 3).
Ich habe Rails Anfänger ausprobiert [Kapitel 2]