[RUBY] [Rails] So bedienen Sie die in der Hauptanwendung verwendete Hilfsmethode mit Administrate

Ärger, was du machen willst

** \\ Die Haupt-App-Hilfsmethode kann nicht verwendet werden /// **

Zu diesem Zeitpunkt habe ich ein Juwel namens ** Administrate verwendet, um einen Administrationsbildschirm in der Rails-App ** zu erstellen. Wenn ich versuche, die in der Hilfsdatei definierte Hilfsmethode für die Ansicht der Hauptanwendung in der Ansicht unter admin zu verwenden, tritt der folgende Fehler auf ...

スクリーンショット 2020-07-21 21.00.03.png

image_present? ist ** die Hilfsmethode, die Sie in der Hauptansicht der App verwenden (was Sie in helpers / shop_helper.rb definiert haben) **. Ich erhalte keinen NoMethodError in der Haupt-App. Was soll ich tun? ?? ??

Umgebung

Fazit

** 1. Beschreiben Sie die folgenden Einstellungen in der Datei config / application.rb. ** ** ** ** 2. Starten Sie die Anwendung (Server) neu **

das ist alles. Es war einfach lol

config/application.rb


module Hoge
  class Application < Rails::Application
    #Andere Konfigurationen können geschrieben werden

    #von hier
    config.to_prepare do
      Administrate::ApplicationController.helper Hoge::Application.helpers
    end
    #Bisher
  end
end

Administrate::ApplicationController.helper Hoge::Application.helpers

Ersetzen Sie den Hoge-Teil durch Ihren eigenen App-Namen.

Es war fest in Issues on GitHub aufgeführt und wurde behoben

Best way to include main app helper modules in administrate? #334 スクリーンショット 2020-07-21 20.51.34.png

Beiseite

Wenn man sich GitHub-Probleme im Referenzartikel ansieht, scheint es andere Möglichkeiten zu geben.

スクリーンショット 2020-07-21 20.52.13.png

Diese Methode ist

  1. Erstellen Sie ein "Administrate" -Verzeichnis unter dem "Helpers" -Verzeichnis
  2. Erstellen Sie dort eine application_helper.rb-Datei
  3. Definieren Sie dort die Hilfsmethode neu Es scheint die Methode zu sein.

Ich versuchte es

helpers/administrate/application_helper.rb


module Administrate::ApplicationHelper
  def image_present?(shop)
    if shop.shop_images.present?
      image_tag "#{shop.shop_images[0].shop_image}", class: 'top-cover-img shop-img'
    else
      image_tag asset_path('no-image.png'), class: 'top-cover-img shop-img'
    end
  end
end

Der Punkt ist die Klassenvererbung beim Deklarieren von "Modul"? Es scheint zu schreiben (Administrate :: Application Helper). Ohne dies erhalten Sie einen Routing-Fehler. スクリーンショット 2020-07-21 21.10.13.png

Kann erreicht werden, verstößt aber gegen das DRY-Prinzip

Ich hätte es mit der obigen Methode realisieren können, aber ich dachte, dass es ** im Widerspruch zum DRY-Prinzip ** steht, weil dieselbe Hilfsmethode zweimal definiert würde.

Wir empfehlen die Methode am Anfang, da Sie keine nutzlosen Dateien erstellen müssen.

Recommended Posts

[Rails] So bedienen Sie die in der Hauptanwendung verwendete Hilfsmethode mit Administrate
[Rails] So wenden Sie das in der Hauptanwendung verwendete CSS mit Administrate an
[Schienen] Verwendung der Kartenmethode
[Rails] Verwendung der Hilfsmethode, Confimartion
[Rails] So erhalten Sie die aktuell mit devise angemeldeten Benutzerinformationen
So überprüfen Sie Rails-Befehle im Terminal
[Schienen] So registrieren Sie mehrere Datensätze in der Zwischentabelle mit einer Zuordnung von vielen zu vielen
[Rails] So verwenden Sie die Hilfsmethode von devise before_action: authenticate_user!
Organisierte schrittweise Interaktion mit dem JDK
Abfragen von Arrays in jsonb mit Rails + postgres
[Schienen] So zeigen Sie Bilder in der Ansicht an
So installieren Sie Docker in der lokalen Umgebung einer vorhandenen Rails-App [Rails 6 / MySQL 8]
[Rails] Lösung, wenn bei Verwendung von Capybara mit Rspec der Fehler "undefined method` visit '" angezeigt wird
Verwendung der Getter / Setter-Methode (in Objektorientierung)
[Mit Backtricks] So stellen Sie React to the simple Rails vor
[Schienen] Anzeigen von Informationen, die in der Datenbank gespeichert sind
Verwendung der link_to-Methode
Verwendung der include? -Methode
Verwendung der Methode form_with
So installieren Sie jQuery in Rails 6
So installieren Sie Swiper in Rails
[Rails / Routing] So verweisen Sie auf den Controller in Ihrem eigenen Verzeichnis
[Rails] Wie man Kaminari mit Slim einführt und das Design ändert
Ich habe versucht zu verstehen, wie die Rails-Methode "redirect_to" definiert ist
Wie installiere ich die in Ubuntu verwendete Sprache und wie erstelle ich die Umgebung?
So erhalten Sie den Wert von Boolean mit jQuery in einfacher Rails-Form
Ich habe versucht zu verstehen, wie die Rails-Methode "link_to" definiert ist
So benennen Sie ein Modell mit externen Schlüsseleinschränkungen in Rails um
Speichern der im Textbereich eingegebenen Informationen in einer Variablen in der Methode
So erstellen Sie eine App mit Ruby on Rails (vorausgesetzt, die Umgebung wurde erstellt)
[Java] So suchen Sie mit der Methode includes nach Werten in einem Array (oder einer Liste)
Speicherort der Methodendefinition Zusammenfassung der zu überprüfenden Informationen Wenn im Projekt und in Rails / Gem definiert
So implementieren Sie Suchfunktionen in Rails
So ändern Sie den App-Namen in Rails
[Ruby on Rails] So melden Sie sich nur mit Ihrem Namen und Passwort mit dem Gem-Gerät an
[Java] Fassen Sie zusammen, wie Sie mit der Methode equals vergleichen können
So fügen Sie ein Video in Rails ein
[Rails / simple_format] Hilfsmethode, die die im Formular eingegebenen Zeilenumbrüche widerspiegelt
[Java] Verwendung der toString () -Methode
Verwendung von MySQL im Rails-Tutorial
[Rails] "Pry-Rails", die beim Speichern mit der create-Methode verwendet werden können
Was ist die Hauptmethode in Java?
[Rails] So konfigurieren Sie das Routing in Ressourcen
So erhalten Sie das Datum mit Java
Wie man nur die Zeit mit Rails vergleicht (von welcher Zeit bis zu welcher Zeit, so etwas wie)
So implementieren Sie Ranking-Funktionen in Rails
So debuggen Sie die Verarbeitung im Ruby on Rails-Modell nur mit der Konsole
Verwendung von credentials.yml.enc aus Rails 5.2
So machen Sie https zum Schema der URL, die vom URL-Helfer von Rails generiert wurde
So verweisen Sie auf eine Spalte, wenn Sie die Spaltennamensmethode in ActiveRecord überschreiben
[Rails] So lösen Sie die Zeitverzögerung von created_at nach der Speichermethode