Dinge, an die Sie sich erinnern sollten, und Konzepte im Ruby on Rails-Tutorial

Einführung

Ich habe Rails studiert, um den Job in eine webbasierte interne Entwicklungsfirma zu wechseln! Als Teil dieser Studie mache ich die 6. Ausgabe des Rails-Tutorials und ich werde erwähnen, dass ich dachte, dies sei __wichtig & __, um mich zu erinnern.

Grundbegriffe und Konzepte von Ruby and Rails

★ Was ist ein Juwel? ――Das von Ruby Gems veröffentlichte Ruby-Paket

★bundle install

★rails db:migrate

  1. Erstellen Sie eine Migrationsdatei und beschreiben Sie den Inhalt
  2. Nehmen Sie Änderungen an der Datenbank vor, indem Sie nacheinander Migrationen mit dem Befehl $ rails db: migrate ausführen

Kapitel 5 Erstellen eines Layouts

5.2.1 Asset-Pipeline

__ Die Asset-Pipeline ist in drei Hauptfunktionen unterteilt (siehe unten). __ __ (* Erklärung ★ Kurze Zusammenfassung)

[Der größte Vorteil der Asset-Pipeline] Für die Effizienz in Produktionsanwendungen optimierte Assets werden ebenfalls automatisch generiert. (= Die Seite wird in der Produktionsumgebung automatisch schneller geladen.)

★ Kurz gesagt, sowohl "Entwicklungsumgebung" als auch "Produktionsumgebung" sind optimiert und es ist die effizienteste / bequemste.

  1. Asset-Verzeichnis
  1. Manifestdatei
 *= require_tree . #app/assets/Ich versuche, alle CSS-Dateien in Stylesheets aufzunehmen
 *= require_self  #Manifestdatei(application.css)Ich versuche mich einzuschließen

Sporockets liest die obigen Kommentare in der Manifestdatei.

  1. Präprozessormotor

★ Kurz gesagt, die Assets sind zusammengefasst, um die Verwendung im Browser zu vereinfachen.

5.3.4 Verbindungstests

    assert_select "a[href=?]", help_path, 
<a href="/help”>...</a>
    assert_select "a[href=?]", root_path, count: 2

Anzahl bedeutet, dass es zwei Links zu root_path gibt und zwei getestet werden.

Es gibt verschiedene Möglichkeiten, assert_select anzugeben. Nachfolgend einige typische Beispiele. image.png

Zusammenfassung von Kapitel 5

--Rails Partials werden aus Effizienzgründen verwendet und Sie können Markups in separaten Dateien ausschneiden.

Kapitel 6 Erstellen eines Benutzermodells

6.1 Benutzermodell

Aktiver Datensatz: Die Standard-Rails-Bibliothek, die mit der Datenbank interagiert

Verwenden Sie beim Erstellen eines Modells den Befehl Modell generieren. Beispiel) Erstellen eines Benutzermodells mit Attributen wie Name und E-Mail

$ rails generate model User name:string email:string

[Namenskonvention für Schienen]

6.1.3 Benutzerobjekt erstellen

--user = User.new: Instanz erstellen --user.save: Modell speichern

>> user = User.new(name: "Michael Hartl", email: "[email protected]")
>> user.save

--User.create: So erstellen und speichern Sie ein Modell gleichzeitig über Active Record

>> User.create(name: "Another Sky”, email: "[email protected]")
>> user.name
=> "Michael Hartl"
>> user.email
=> "[email protected]"
>> user.updated_at
=> Mon, 23 May 2016 19:05:58 UTC +00:00
>> User.find(1)
=> #<User id: 1, name: "Michael Hartl", email: "[email protected]",
created_at: "2019-08-22 01:51:03", updated_at: "2019-08-22 01:51:03">
>> User.find_by(email: "[email protected]")
=> #<User id: 1, name: "Michael Hartl", email: "[email protected]",
created_at: "2019-08-22 01:51:03", updated_at: "2019-08-22 01:51:03">

6.2 Benutzer validieren

Validierungsfall, der häufig in Active Record verwendet wird

  1. Präsenz
  2. Länge
  3. Formatieren
  4. Einzigartigkeit

__ So fahren Sie mit testgetriebenen Entwicklungstests fort __

  1. Erstellen Sie ein gültiges Modellobjekt
  2. Ändern Sie absichtlich eines seiner Attribute in ein ungültiges Attribut
  3. Testen Sie, ob die Validierung fehlschlägt
  4. Um auf der sicheren Seite zu sein, schreiben Sie zuerst einen Test für den Status zum Zeitpunkt der Erstellung und prüfen Sie auch, ob das erste Modell gültig ist.
  5. Durch Testen in 4. Wenn der Validierungstest fehlschlägt, können Sie überprüfen, ob ein Problem mit der Validierungsimplementierung oder dem Objekt selbst aufgetreten ist.

rails test: models: Befehl, nur Tests für Modelle auszuführen

$ rails test:models

6.3.1 Hashed Passwort

Der Migrationsname kann frei angegeben werden. Durch Angabe des Endes (to_users) erstellt Rails automatisch eine Migration, die der Benutzertabelle Spalten hinzufügt.

Beispiel) Führen Sie den folgenden Befehl aus, um eine Migrationsdatei mit dem Namen add_password_digest_to_users zu generieren.

$ rails generate migration add_password_digest_to_users password_digest:string

Zusammenfassung von Kapitel 6

--Active Record bietet Ihnen viele Methoden zum Erstellen und Bearbeiten von Datenmodellen

Kapitel 7 Benutzerregistrierung

7.3.3 Fehlermeldung

"Shared": Partials, die von mehreren Ansichten verwendet werden, sind dedizierte Verzeichnisse

7.3.4 Test auf Fehler

assert_select: Testziel ist CSS ・ Für Klasse → ID Name von div # CSS

assert_select 'div#error_explanation'

Für Klasse → div.CSS Klassenname

assert_select 'div.field_with_errors'

7.6.1 Zusammenfassung dieses Kapitels

Kapitel 8 Grundlegender Anmeldemechanismus

8.1 Sitzung

--_ __ HTTP ist ein zustandsloses Protokoll __

--Wenn Sie Benutzerinformationen usw. in einer Webanwendung verwalten, müssen Sie in "Sitzung" separat eine semi-persistente Verbindung zwischen Client und Server festlegen.

8.1.5 Flash-Test

Was ist assert_template: Testet, ob die URL nach assert_template die Ansicht rendert.

    assert_template 'sessions/new'

Spalte 8.1. 「||=Was ist "?"

Ruby wurde entwickelt, um Null und Falsch zu betrachten und jedes Objekt wahr zu machen. In Ruby||Wenn Sie mehrere Operatoren hintereinander in einem Ausdruck verwenden, werden die Begriffe in der Reihenfolge von links ausgewertet und der Vorgang beendet, wenn er zum ersten Mal wahr wird. Diese Auswertungsmethode wird als Kurzschlussauswertung bezeichnet.

Der Operator __ && __ hat ein ähnliches Design, außer dass der Begriff von links ausgewertet wird und der Prozess endet, wenn er zum ersten Mal false wird.

8.2.4 Layoutänderungen testen

.& __sicherer Navigationsbetreiber(Oder"Bocchi-Betreiber)__ 


 Sie können Rubys Bocchi-Operator verwenden, um Muster wie obj && obj.method in einer komprimierten Form wie obj & .method zu schreiben.
 Als Beispiel den folgenden logischen Operatorcode

```ruby

    if user && user.authenticate(params[:session][:password])

Es kann wie folgt vereinfacht werden.


    if user&.authenticate(params[:session][:password])

&& user.authentifizieren ist&.Es kann als Authentifizierung vereinfacht werden.


 Ist es nicht zu einfach für einen Ruby-Anfänger? Ich bin ein wenig verwirrt,
 Es scheint, dass der Bocchi-Operator häufig verwendet wird, sodass Sie sich anscheinend anstrengen müssen, um sich selbst daran zu erinnern.

#### 8.4.1 Zusammenfassung dieses Kapitels
 - Sie können die Rails'``` session``` -Methode verwenden, um den Status zum Zeitpunkt des Seitenübergangs beizubehalten. Sie können auch Cookies verwenden, um den temporären Status beizubehalten. (* Da alle Browser in Zukunft das Teilen domänenübergreifender Cookies verbieten, können Sie die in der Rakuten ○ -Domäne erworbene Rakuten-ID usw. nicht in einer anderen Domäne (einer anderen Domäne als Rakuten) verwenden.)
 - Sie können die Benutzer-ID usw. vorübergehend im Browser speichern, indem Sie die Methode "Sitzung" verwenden.
 - Test Driven Development (TDD) ist nützlich, um Regressionsfehler zu verhindern
 - Mit Integration Strike können Sie testen, ob Routing, DB-Updates und Layoutänderungen erfolgreich durchgeführt werden

## Kapitel 9 Weiterentwicklung des Anmeldemechanismus
#### 9.1.1 Speichertoken und Verschlüsselung
 Es gibt vier bekannte Möglichkeiten, Cookies zu stehlen.
 1. Extrahieren Sie Cookies mit einer speziellen Software namens Packet Sniffer direkt aus Netzwerkpaketen, die ein schlecht verwaltetes Netzwerk durchlaufen.
 2. Extrahieren Sie das Speichertoken aus der Datenbank
 3. Verwenden Sie Cross-Site-Scripting (XSS).
 4. Stehlen Sie den Zugriff, indem Sie den PC oder das Smartphone, auf dem der Benutzer angemeldet ist, direkt bedienen

 Die Gegenmaßnahme von 1. besteht darin, die Site mit 7.5 SSL zu unterstützen
 Entsprechung von 2. In diesem Lernprogramm wird das Speicher-Token in der Datenbank als __hashing__ gespeichert.
 Die Korrespondenz von 3. wird automatisch in Rails behandelt
 4. Es ist dem System unmöglich, grundlegende Verteidigungsmaßnahmen zu ergreifen

 ■ Verwendung von attr_accessor
 Wenn Sie die Attribute eines Objekts definieren möchten, die gelesen und geschrieben werden können
 
 -Wie man ein Benutzerobjekt mit Attributname und Beschreibung definiert
 Für Schienen

```ruby

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.string :name
      t.string :description

      t.timestamps null: false
    end
  end
end

Für reinen Ruby-Code, der keine DB verarbeitet


class User
  attr_accessor :name, :description
end

Übrigens wird "attr_reader" verwendet, wenn Sie schreibgeschützte Attribute definieren möchten. attr_writerWird verwendet, wenn Sie schreibgeschützte Attribute definieren möchten.

Spalte 9.2. 10 Arten von Personen

"Es gibt 10 Arten von Menschen auf dieser Welt. Jemand, der Binär versteht, und einige, die Binär nicht verstehen" ist ein alter Witz in der Branche. Es ist wie bei Roland (lacht). Vielleicht ist Roland von hier aus festgefahren? ??

■ Trinity-Operator Der folgende wenn sonst Code

  if boolean?
    var = foo
  else
    var = bar
  end

Kann wie folgt gekürzt werden

var = boolean? ? foo : bar

Wir verwenden häufig den ternären Operator als Rückgabewert einer Methode.

9.3.2 Test [Erinnere dich an mich]

assert_equalIst ,Ordnen Sie die Werte in der Reihenfolge an.

assert_equal <expected>, <actual>

9.4.1 Zusammenfassung dieses Kapitels

Kapitel 10 Benutzer aktualisieren / anzeigen / löschen

10.1 Benutzer aktualisieren

target="_blank"Verwenden Sie diese Option, um eine Verknüpfung zu einer neuen Registerkarte herzustellen(Oder Fenster)Dies ist ein nützliches Element beim Verknüpfen mit einer anderen Website, da diese in geöffnet wird. ★ Persönlich bin ich mit einem anderen Tab zufrieden, wenn ich zum Link-Ziel springe. Wenn ich ihn implementiere, möchte ich ihn definitiv implementieren! Persönlich denke ich, dass Websites für PCs (vorausgesetzt, PCs sind die Hauptkunden) auf jeden Fall eingeführt werden sollten!

<a href="https://gravatar.com/emails" target="_blank">change</a>

Rails verwendet `form_with (@user)`, um ein Formular zu erstellen, und wenn @ user.new_record? `` Ist true```, ist es POST```. , `` PATCH``` wenn` false.

10.2.3 Freundliche Weiterleitung

In __ * Tutorial wird user anstelle von @user verwendet. Wenn Sie es jedoch verwenden, tritt in users_login_test ein Fehler auf. Verwenden Sie daher @user. __ __

sessions_controller.rb


  def create
    @user = User.find_by(email: params[:session][:email].downcase)              #Deklarieren Sie den im Parameter-Hash empfangenen E-Mail-Wert, übergeben Sie ihn an das E-Mail-Attribut, suchen Sie den Benutzer mit demselben E-Mail-Wert im Benutzermodell und weisen Sie ihn der Benutzervariablen zu.
    if @user && @user.authenticate(params[:session][:password])                 #Die Benutzervariable ist in der Datenbank vorhanden, und der im Parameter-Hash empfangene Kennwortwert entspricht dem E-Mail-Wert des Benutzers.(Wenn das Passwort und die E-Mail-Adresse den gleichen Wert haben)true
      log_in @user                                                              # sessions_Hilfsprotokoll_Führen Sie die in-Methode aus und verwenden Sie den Benutzer der Sitzungsmethode_ID an ID senden (als temporäre Cookies im Browser gespeichert)
      params[:session][:remember_me] == '1' ? remember(@user) : forget(@user)   #Erinnern Sie sich an die Sitzung beim Anmelden_Ich Attribut ist 1(Kontrollkästchen ist aktiviert)Wenn ja, zerstören Sie die Sitzung dauerhaft, andernfalls zerstören Sie die dauerhafte Sitzung
      redirect_back_or @user                                                    #Weiterleiten zur vorherigen Seite des Benutzers oder Standard
    else
      flash.now[:danger] = 'Invalid email/password combination'                 #Zeigen Sie eine Flash-Nachricht an und deaktivieren Sie sie, wenn eine neue Anforderung auftritt
      render 'new'                                                              #Neue Ansichtsausgabe
    end
  end
Error:
UsersLoginTest#test_login_with_remembering:
NoMethodError: undefined method `remember_token' for nil:NilClass
    test/integration/users_login_test.rb:60:in `block in <class:UsersLoginTest>'

10.5.1 Zusammenfassung dieses Kapitels

Kapitel 11 Kontoaktivierung

Ablauf der Benutzeraktivierung

  1. Der Ausgangszustand des Benutzers wird auf "nicht aktiviert" gesetzt.
  2. Bei der Benutzerregistrierung werden ein Aktivierungstoken und der entsprechende Aktivierungs-Digest generiert.
  3. Speichern Sie den Aktivierungs-Digest in der Datenbank und fügen Sie das Aktivierungs-Token zusammen mit der E-Mail-Adresse in den Link der an den Benutzer gesendeten Aktivierungs-E-Mail ein.
  4. Wenn der Benutzer auf den Link in der E-Mail klickt, verwendet die Anwendung die E-Mail-Adresse als Schlüssel, um den Benutzer zu finden, und authentifiziert das Token durch Vergleich mit dem in der Datenbank gespeicherten Aktivierungs-Digest.
  5. Ändern Sie nach der Authentifizierung des Benutzers den Status des Benutzers von "nicht aktiviert" in "aktiviert".

11.3.3 Aktivierungstests und Refactoring

assignsMit Methoden können Sie in der entsprechenden Aktion auf Instanzvariablen zugreifen. Zum Beispiel hat die Aktion `create``` des Users-Controllers eine Instanzvariable` @ user```, aber wenn Sie im Test `assigns (: user)` schreiben, ist dies die Benutzerinstanzvariable Sie können darauf zugreifen.

Ich habe einen Testfehler erhalten. .. Lesen Sie diesen Teratail-Artikel und verwenden Sie den folgenden Code

  def create
    user = User.find_by(email: params[:session][:email].downcase)
    if user && user.authenticate(params[:session][:password])
      if user.activated?
        log_in user
        params[:session][:remember_me] == '1' ? remember(user) : forget(user)
        redirect_back_or user
      else
        message  = "Account not activated. "
        message += "Check your email for the activation link."
        flash[:warning] = message
        redirect_to root_url
      end
    else
      flash.now[:danger] = 'Invalid email/password combination'
      render 'new'
    end
  end

Es gelang mir, das Folgende zu tun ~

  def create
    @user = User.find_by(email: params[:session][:email].downcase)
    if @user && @user.authenticate(params[:session][:password])
      if @user.activated?
        log_in @user
        params[:session][:remember_me] == '1' ? remember(@user) : forget(@user)
        redirect_back_or @user
      else
        message  = "Account not activated. "
        message += "Check your email for the activation link."
        flash[:warning] = message
        redirect_to root_url
      end
    else
      flash.now[:danger] = 'Invalid email/password combination'
      render 'new'
    end
  end

11.5.1 Zusammenfassung dieses Kapitels

Kapitel 12 Passwort zurücksetzen

12.3.3 Test Passwort zurücksetzen

-Die Zuweisungsmethode ist eine Methode, die die Instanzvariablen des Controllers testet. Übergeben Sie die Instanzvariable als Argument als Symboltyp. Dadurch erhalten Sie Zugriff auf die Instanzvariablen und können diese testen.

    @user = assigns(:user)

12.5.1 Zusammenfassung dieses Kapitels

Kapitel 13 Benutzer Micropost

13.4.1 Grundlegender Bild-Upload

■Active Storage Bilder können mithilfe von Active Storage einfach verarbeitet werden, und das den Bildern zugeordnete Modell kann frei angegeben werden. Active Storage ist äußerst vielseitig und kann verschiedene Binärdateien wie Nur-Text-, PDF- und Audiodateien verarbeiten.

Das erste, was Sie über die Active Storage-API wissen müssen, ist die Methode has_one_attached. Dies wird verwendet, um das angegebene Modell der hochgeladenen Datei zuzuordnen. Mit has_one_attached kann das angegebene Modell der hochgeladenen Datei zugeordnet werden. Im Fall von has_one_attached "1 Bild pro Microsoft", Sie können has_many_attached verwenden, um "mehrere Bilder pro Microsoft" anzuhängen.

13.5.1 Zusammenfassung dieses Kapitels

--Rails unterstützt mehrere Schlüsselindizes

Kapitel 14 Benutzer folgen

14.2.2 Statistik und Formular folgen

@user ||= current_user

Der obige Code bewirkt nichts, wenn `` @ user nicht Null ist, und weist current_user` `@ user zu, wenn er Null ist.

14.4.3 Zusammenfassung dieses Kapitels

--has_many: Mit können Sie komplexe Datenbeziehungen modellieren

Sonderedition

__ ■ Liste der Zusicherungen __

Methode Erläuterung
assert_template(expected, message = nil) Stellen Sie sicher, dass die in der Aktion angegebene Vorlage dargestellt ist
assert_not( test, [msg] ) __test__Aber__false__Überprüfen Sie, ob.
assert_select "div.nav" selector(div)Der Inhalt des Elements, das dem Argument Gleichheit entspricht(nav)Überprüfen Sie bei

■ __ "!!" (gelesen als "Bang Bang") __ Ein Operator, der ein Objekt in einen Booleschen Wert konvertieren kann. Null wird falsch sein.

>> !!nil
=> false

Alle anderen Ruby-Objekte sind wahr, sogar Null.

>> !!0
=> true

■! Über das Überraschungszeichen (Ausrufezeichen) ◆ Mit der Markierung! Können Sie die Daten direkt ändern (Attribut ~ ~). Wenn Sie ★ nicht verwenden!

  before_save { self.email = email.downcase }

Bei Verwendung von ★!

  before_save { email.downcase! }

Sie können exception auslösen, indem Sie ◆! Zu einer Methode hinzufügen! !! Beispiel mit erstellen, speichern. Ohne! (Speichern erstellen) -Wenn der Prozess ausgeführt wird und das Erstellen / Speichern des Datensatzes fehlschlägt, wird `` `nil``` zurückgegeben. Beim Hinzufügen! (Erstellen! Speichern!) Eine Ausnahme (z. B. "ActiveRecord :: RecordNotFound ERROR") kann ausgelöst werden.


■ HTML __type = "E-Mail" __ Mit __type = "email" __ in HTML wird durch Tippen auf das Eingabeformular von Ihrem Mobiltelefon aus eine spezielle Tastatur angezeigt, die für Ihre E-Mail-Adresse optimiert ist.

`private `Schlüsselwort

  private

    def user_params
      params.require(:user).permit(:name, :email, :password, :password_confirmation)
    end

PATCH Method for HTTP

■ << Bediener (Schaufelbediener) <<Sie können es am Ende des Arrays mit hinzufügen.

user.following << other_user

schließlich

Es hat eine ganze Weile gedauert. .. Es dauerte ungefähr einen Monat, obwohl Cloud9-Fehler auftraten. .. Ich denke, es kann nicht geholfen werden, weil es ziemlich umfangreich war, aber es gibt Leute, die es früher beenden, also werde ich Portfolio früher fertig machen! !!

Danke fürs Lesen! !!

Recommended Posts

Dinge, an die Sie sich erinnern sollten, und Konzepte im Ruby on Rails-Tutorial
So debuggen Sie die Verarbeitung im Ruby on Rails-Modell nur mit der Konsole
Cloud-IDE: Heroku konnte nicht im Ruby on Rails-Tutorial installiert werden
[Ruby on Rails] Wie schreibe ich eine Enumeration auf Japanisch?
[Ruby on Rails] Ändern Sie das Aktualisierungsdatum und das Erstellungsdatum in Ihre bevorzugte Notation
[Ruby on Rails] So melden Sie sich nur mit Ihrem Namen und Passwort mit dem Gem-Gerät an
[Ruby On Rails] So setzen Sie die Datenbank in Heroku zurück
(Ruby on Rails6) So erstellen Sie ein Modell und eine Tabelle
[Ruby on Rails] Zeigt den Seitentitel schnell im Browser an
So zeigen Sie Diagramme in Ruby on Rails an (LazyHighChart)
Wenden Sie CSS auf eine bestimmte Ansicht in Ruby on Rails an
Verwendung von Ruby on Rails
Ruby on Rails Japanisch-Englisch kompatibler i18n
Was tun, wenn die Rails-Seite im Rails-Lernprogramm 1.3.2 nicht angezeigt wird?
(Ruby on Rails6) Erstellen einer Datenbank und Anzeigen in einer Ansicht
Was tun, wenn Cloud 9 im Rails-Lernprogramm voll ist?
Ich habe den Ablauf bis zur Implementierung von simple_calendar in Ruby on Rails zusammengefasst.
(Ruby on Rails6) Erstellen Sie eine Funktion zum Bearbeiten des veröffentlichten Inhalts
[Ruby on Rails] Übergeben Sie die durch date_select geteilten Parameter an FormObject.
Ruby on Rails in Visual Studio-Codespaces
Verwendung von MySQL im Rails-Tutorial
Bereitstellen für Heroku [Ruby on Rails] Anfänger
Vorbereiten der Einführung von jQuery in Ruby on Rails
[Ruby on Rails] Verwendung von redirect_to
Anfänger haben mit Ruby on Rails ein Portfolio erstellt
[Ruby on Rails] Schaltfläche, um nach oben zurückzukehren
Wechseln Sie in einem neuen Ruby on Rails-Projekt von SQLite3 zu PostgreSQL
So erstellen Sie eine Abfrage mithilfe von Variablen in GraphQL [Verwenden von Ruby on Rails]
Was tun, wenn blockierter Host: "Hostname" in Ruby on Rails angezeigt wird
So lösen Sie die lokale Umgebungskonstruktion von Ruby on Rails (MAC)!
[Cloud9] Yay! Du bist auf Schienen! Wird im Schienen-Tutorial nicht angezeigt
[Ruby On Rails] Notfallmaßnahmen, wenn redirect_to action :: show nicht zum Erstellen von Aktionen und zum Zerstören von Aktionen verwendet werden kann (kann)
[Ruby on Rails] Beim ersten Anmelden ・ So teilen Sie den Bildschirm mit jQuery in zwei Hälften
Bereitstellung auf Ruby on Rails Elastic Beanstalk (EB-Bereitstellung)
[Ruby on Rails] Bis zur Einführung von RSpec
Ich habe versucht, die Sitzung in Rails zu organisieren
Empfehlung der Serviceklasse in Ruby on Rails
Veröffentlichen Sie die mit Ruby on Rails erstellte App
Ruby on Rails ~ Grundlagen von MVC und Router ~
Rails neu in Ruby on Rails ~ Memorandum bis zur Bereitstellung 1
(Ruby on Rails6) Erstellen von Daten in einer Tabelle
Bestimmen Sie die aktuelle Seite mit Ruby on Rails
So erstellen Sie die einfachste Blockchain in Ruby
So überprüfen Sie Rails-Befehle im Terminal
Ich möchte den Wert in Ruby erhalten
[Ruby on Rails] So machen Sie das Linkziel zu einem Teil der angegebenen ID