** \\ 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 ...
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? ?? ??
** 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
Hoge
ist der App-Name. Normalerweise sollte der App-Name zum Zeitpunkt der neuen Schienen nach dem "Modul" in der ersten Zeile aufgeführt werden.
Administrate::ApplicationController.helper Hoge::Application.helpers
Ersetzen Sie den Hoge-Teil durch Ihren eigenen App-Namen.
Best way to include main app helper modules in administrate? #334
Wenn man sich GitHub-Probleme im Referenzartikel ansieht, scheint es andere Möglichkeiten zu geben.
Diese Methode ist
application_helper.rb
-Dateihelpers/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.
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