** \\ La méthode d'assistance de l'application principale ne peut pas être utilisée /// **
C'est à ce moment que j'ai utilisé un joyau appelé ** Administrer pour créer un écran d'administration dans l'application Rails **. Lorsque j'essaie d'utiliser la méthode d'assistance définie dans le fichier d'assistance pour une utilisation dans la vue de l'application principale dans la vue sous admin, l'erreur suivante se produit ...
ʻImage_present? Est-ce que ** la méthode d'assistance que vous utilisez dans la vue principale de l'application (que vous avez définie dans
helpers / shops_helper.rb`) **.
Je ne reçois pas de NoMethodError dans l'application principale ... que dois-je faire? ?? ??
** 1. Décrivez les paramètres suivants dans le fichier config / application.rb
. ** **
** 2. Redémarrez l'application (serveur) **
c'est tout. C'était facile lol
config/application.rb
module Hoge
class Application < Rails::Application
#D'autres configs peuvent être écrites
#d'ici
config.to_prepare do
Administrate::ApplicationController.helper Hoge::Application.helpers
end
#Jusque là
end
end
Hoge
est le nom de l'application. Normalement, le nom de l'application au moment des rails new devrait être listé après le module
sur la première ligne.
Administrate::ApplicationController.helper Hoge::Application.helpers
Remplacez la partie Hoge
de par votre propre nom d'application.
Best way to include main app helper modules in administrate? #334
En regardant Problèmes GitHub répertoriés dans l'article de référence, il semble y avoir d'autres moyens.
Cette méthode est
sous le répertoire
helpers`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
Le point est l'héritage de classe lors de la déclaration de module
? Il semble écrire (ʻAdministrate :: Application Helper`).
Sans cela, vous obtiendrez une erreur de routage.
J'aurais pu le réaliser par la méthode ci-dessus, mais je pensais que c'était ** contraire au principe DRY ** car la même méthode d'assistance serait définie deux fois.
Nous recommandons la méthode au début car vous n'avez pas à créer de fichiers inutiles.
Recommended Posts