[RUBY] Ich habe versucht, Slim mit Scaffold anzupassen

Was ist das

Überblick

Beim Anpassen des Schienengerüsts hatte ich Probleme mit der schlanken Ausgabe, also dem Kampf, sie zu realisieren

Für solche Leute

・ Personen, die eine schlanke Template-Engine für Schienen verwenden Oder wer die Rails Template Engine schlank machen will ・ Personen, die das Gerüst anpassen, aber die Ansicht zum Anpassen aufgeben Oder jemand, der das Gerüst anpassen möchte

Umgebung

Rails 6.0.2.2 ruby 2.6.5

Vorbereitung für die Umsetzung

Teil 1 Machen Sie die Template-Engine schlank

Lesen Sie diesen Artikel und fügen Sie einen Edelstein namens "Slim-Rails" hinzu. https://qiita.com/ftyabu/items/42eb62901b6b56a7dc72

Teil 2 Ermöglichen das Anpassen der Gerüstvorlage

In diesem Artikel erfahren Sie, wie Sie eine Vorlage erstellen und ihre Referenz ändern. https://qiita.com/akito1986/items/d9f379191fd6b98de955

Schritte zur Realisierung

Teil 1 Ändern Sie den Verzeichnisnamen von erb in slim

Ich denke, dass die folgenden Dateien in "Teil 2" oben erstellt wurden. (Kann je nach Einstellung unterschiedlich sein)

$ tree lib/templates
lib/templates
├── erb
│   ├── controller
│   │   ├── templates
│   │   │   └── view.html.erb
│   │   └── view.html.erb
│   ├── mailer
│   │   ├── templates
│   │   │   ├── view.html.erb
│   │   │   └── view.text.erb
│   │   ├── view.html.erb
│   │   └── view.text.erb
│   └── scaffold
│       ├── _form.html.erb
│       ├── edit.html.erb
│       ├── index.html.erb
│       ├── new.html.erb
│       ├── show.html.erb
│       └── templates
│           ├── _form.html.erb
│           ├── edit.html.erb
│           ├── index.html.erb
│           ├── new.html.erb
│           └── show.html.erb
└── rails
    ├── assets
    │   ├── javascript.js
    │   ├── stylesheet.css
    │   └── templates
    │       ├── javascript.js
    │       └── stylesheet.css
    ├── controller
    │   ├── controller.rb
    │   └── templates
    │       └── controller.rb
    ├── helper
    │   ├── helper.rb
    │   └── templates
    │       └── helper.rb
    └── scaffold_controller
        ├── api_controller.rb
        ├── controller.rb
        └── templates
            ├── api_controller.rb
            └── controller.rb

16 directories, 28 files

Lassen Sie uns dieses "erb" -Verzeichnis in "slim" ändern.

Teil 2 Schreiben Sie die Datei von erb.tt-Spezifikationen in slim.tt-Spezifikationen um

Nun, hier ist die Produktion. Ich habe nach einem hilfreichen Artikel gesucht, ihn aber nicht gefunden. Schauen wir uns zunächst den Inhalt der Zieldatei an

lib/templates/erb/scaffold/index.html.erb.tt

<p id="notice"><%%= notice %></p>

<h1><%= plural_table_name.titleize %></h1>

<table>
  <thead>
    <tr>
<% attributes.reject(&:password_digest?).each do |attribute| -%>
      <th><%= attribute.human_name %></th>
<% end -%>
      <th colspan="3"></th>
    </tr>
  </thead>

  <tbody>
    <%% @<%= plural_table_name %>.each do |<%= singular_table_name %>| %>
      <tr>
<% attributes.reject(&:password_digest?).each do |attribute| -%>
        <td><%%= <%= singular_table_name %>.<%= attribute.column_name %> %></td>
<% end -%>
        <td><%%= link_to 'Show', <%= model_resource_name %> %></td>
        <td><%%= link_to 'Edit', edit_<%= singular_route_name %>_path(<%= singular_table_name %>) %></td>
        <td><%%= link_to 'Destroy', <%= model_resource_name %>, method: :delete, data: { confirm: 'Are you sure?' } %></td>
      </tr>
    <%% end %>
  </tbody>
</table>

<br>

<%%= link_to 'New <%= singular_table_name.titleize %>', new_<%= singular_route_name %>_path %>

Ich war mir über das Symbol <%% = nicht sicher, vielleicht ist es Leuten bekannt, die erb regelmäßig verwenden.

https://qiita.com/ykhirao/items/7ff9ce515a82a6dd24ea Dieser Artikel führte <%% = ein. Dies soll verhindern, dass die erb-Datei beschädigt wird, selbst wenn der erb einmal erweitert wird.

Wie kann ich das mit slim erreichen? ..

Teil 3 (Misserfolg) Beweisen Sie die Theorie, dass, wenn Sie versuchen, den Edelstein vorerst zu treffen

Ich erinnerte mich plötzlich hier. Die Existenz von "erb2slim".

Ich habe es versucht und geglaubt, dass "erb richtig geschrieben wurde und es reparieren würde". ..

lib/templates/erb/scaffold/index.html.slim

p#notice
  - %= notice
h1
  = plural_table_name.titleize
table
  thead
    tr
      - attributes.reject(&:password_digest?).each do |attribute|
        th
          = attribute.human_name
      th[colspan="3"]
  tbody
    |  <ruby code="% @
    = plural_table_name
    | .each do |
    = singular_table_name
    | | "> 
    tr
      - attributes.reject(&:password_digest?).each do |attribute|
        td
          - %= <%= singular_table_name
          | .
          = attribute.column_name
          |  %>
      td
        - %= link_to 'Show', <%= model_resource_name
        |  %>
      td
        - %= link_to 'Edit', edit_<%= singular_route_name
        | _path(
        = singular_table_name
        | ) %>
      td
        - %= link_to 'Destroy', <%= model_resource_name
        | , method: :delete, data: { confirm: 'Are you sure?' } %>
    - % end
br
- %= link_to 'New <%= singular_table_name.titleize
| ', new_
= singular_route_name
| _path %> 

Es riecht nur nach Zusammenbruch. .. .. Lol Wie erwartet war es bei der Ausführung des Gerüsts eine Reihe von Syntaxfehlern. Immerhin scheint es sicherer, es selbst zu beheben

Teil 4 Holen Sie sich Hinweise von Slim-Rails

Ich wollte jedoch mit etwas anfangen, und als ich plötzlich verschiedene Dinge erforschte "Slim-Rails sollten in erster Linie mit der Gerüstschablone spielen." Ich hatte eine gute Idee, also habe ich sie überprüft. Dann ... https://github.com/slim-template/slim-rails war.

slim-rails/lib/generators/slim/scaffold/templates/index.html.slim

h1 Listing <%= plural_table_name %>

table
  thead
    tr
<% attributes.each do |attribute| -%>
      th <%= attribute.human_name %>
<% end -%>
      th
      th
      th

  tbody
    - @<%= plural_table_name %>.each do |<%= singular_table_name %>|
      tr
<% attributes.each do |attribute| -%>
        td = <%= singular_table_name %>.<%= attribute.name %>
<% end -%>
        td = link_to 'Show', <%= singular_table_name %>
        td = link_to 'Edit', edit_<%= singular_table_name %>_path(<%= singular_table_name %>)
        td = link_to 'Destroy', <%= singular_table_name %>, data: { confirm: 'Are you sure?' }, method: :delete

br

= link_to 'New <%= human_name %>', new_<%= singular_table_name %>_path

Mit anderen Worten, Sie können darauf verweisen und die Vorlage nach Ihren Wünschen ändern. Wenn Sie es finden, ist dies derjenige. Bitte führen Sie ein wundervolles, individuelles Leben, während Sie den Wortlaut ändern, die Struktur ändern und fleißig experimentieren.

Fazit

Quellcode bei Problemen Wenn ich es früh bemerkte, war es sofort gelöst

Recommended Posts

Ich habe versucht, Slim mit Scaffold anzupassen
Ich habe UPSERT mit PostgreSQL ausprobiert.
Ich habe BIND mit Docker ausprobiert
Ich habe versucht, JOOQ mit Gradle zu verwenden
Ich habe eine morphologische Analyse mit MeCab versucht
Ich habe versucht, mit Java zu interagieren
Ich habe versucht, UDP mit Java zu kommunizieren
Ich habe GraphQL mit Spring Boot ausprobiert
Ich habe Flyway mit Spring Boot ausprobiert
Ich habe versucht, Realm mit Swift UI zu verwenden
Ich habe versucht, mit Web Assembly zu beginnen
Ich habe versucht, Scalar DL mit Docker zu verwenden
Ich habe versucht, OnlineConverter mit SpringBoot + JODConverter zu verwenden
Ich habe mit Studyplus zeitsparendes Management-Lernen versucht.
Ich habe versucht, ein wenig mit BottomNavigationView zu spielen ①
Ich habe versucht, OpenCV mit Java + Tomcat zu verwenden
Ich habe Lazy Initialization mit Spring Boot 2.2.0 ausprobiert
Ich habe es mit Spring versucht.
Ich habe versucht, Tomcat zu setzen
Ich habe youtubeDataApi ausprobiert.
Ich habe versucht, ① umzugestalten
Ich habe JHipster 5.1 ausprobiert
Ich habe versucht, AdoptOpenJDK 11 (11.0.2) mit dem Docker-Image zu überprüfen
Ich habe versucht, eine Standardauthentifizierung mit Java durchzuführen
Ich habe versucht, die Federbeinkonfiguration mit Coggle zu verwalten
Ich habe auch Web Assembly mit Nim und C ausprobiert
Ich habe mit Ruby einen Blackjack gemacht (ich habe versucht, Minitest zu verwenden)
Ich habe versucht, den Block mit Java zu brechen (1)
Ich habe versucht, mit Gradle auf Heroku zu beginnen
Ich habe versucht, was ich mit Stream leise versuchen wollte.
[Ich habe es versucht] Spring Tutorial
Ich habe versucht, das Hochladen von Dateien mit Spring MVC zu implementieren
Ich habe versucht, CSV mit Outsystems zu lesen und auszugeben
Ich habe versucht, TCP / IP + BIO mit JAVA zu implementieren
Ich habe versucht, Autoware auszuführen
Ich habe versucht, Gson zu benutzen
[Java 11] Ich habe versucht, Java auszuführen, ohne mit Javac zu kompilieren
Ich habe MySQL 5.7 mit Docker-Compose gestartet und versucht, eine Verbindung herzustellen
Ich habe sofort QUARKUS ausprobiert
Ich habe versucht, TestNG zu verwenden
[Maschinelles Lernen] Ich habe die Objekterkennung mit Create ML [Objekterkennung] ausprobiert.
Ich habe Spring Batch ausprobiert
Ich habe versucht, Galasa zu benutzen
Ich habe versucht, Animationen mit der Blazor + Canvas-API zu zeichnen
Ich habe versucht, mit OCR eine PDF-Datei mit Java zu verarbeiten
Ich habe versucht, node-jt400 (Programme)
Ich habe versucht, node-jt400 (ausführen)
Ich habe versucht, node-jt400 (Transaktionen)
Ich habe versucht, das Ruby on Rails-Plugin mit vim-plug zu installieren
Ich habe versucht, mit Chocolatey eine Java8-Entwicklungsumgebung zu erstellen
Ich habe versucht, eine Java EE-Anwendung mit OpenShift zu modernisieren.
Ich habe versucht, die Verarbeitungsgeschwindigkeit mit spiritueller Technik zu erhöhen
[Rails] Ich habe versucht, eine Mini-App mit FullCalendar zu erstellen
Ich habe das Spring Boot-Einführungshandbuch [Zugriff auf Daten mit JPA] ausprobiert.
Ich habe versucht, die automatische Bereitstellung mit CircleCI + Capistrano + AWS (EC2) + Rails durchzuführen