Comment puis-je utiliser des aides de rake?
Puis-je utiliser des méthodes d'assistance en râteau?
Vous devez vous connecter pour publier un commentaire.
Puis-je utiliser des méthodes d'assistance en râteau?
Vous devez vous connecter pour publier un commentaire.
Oui, vous le pouvez. Vous avez simplement besoin de demander l'aide du fichier et ensuite inclure l'aide à l'intérieur de votre râteau fichier (ce qui en fait un helper est un mixin que l'on peut comprendre).
Par exemple, ici, j'ai un application_helper fichier à l'intérieur de app/helpers répertoire qui contient ceci:
voici donc mon râteau contenu du fichier:
et voici le résultat sur mon Terminal:
include
dans râteau, vous avez, par inadvertance polluer le champ d'application deObject
, qui succombe ensuite importés râteau de tâches de partager les mêmes méthodes.Object
, ce qui peut avoir des effets de grande envergure qui peuvent être extrêmement difficiles à dépister. Vient de perdre deux heures à cette...Comme lfender6445 mentionné, à l'aide de
include ApplicationHelper
, comme dans Arie réponse, va polluer le niveau supérieur de la portée contenant vos tâches.Voici une autre solution qui évite que les dangereux effets secondaires.
Tout d'abord, nous devrions pas mettre notre tâche aides dans
app/helpers
. Pour citer "Où Dois-Je Mettre Mon Code?" à codefol.io:Depuis
app/helpers
est prévu pour les aides de vue, et le Râteau tâches ne sont pas vues, nous devrions mettre notre tâche aides de quelque part d'autre. Je recommandelib/task_helpers
.Dans
lib/task_helpers/application_helper.rb
:Dans votre
Rakefile
ou un.rake
fichier danslib/tasks
:Je ne sais pas si la question a été à l'origine de demander à propos de y compris les aides de vue de rake tâches, ou tout simplement "helper" pour Râteau tâches. Mais ce n'est pas idéal pour partager un fichier de helper à travers les deux points de vue et des tâches. Au lieu de cela, prendre les aides que vous souhaitez utiliser dans les deux points de vue et des tâches, et de les déplacer vers un autre dépendance qui est inclus à la fois dans un helper de vue, et dans une tâche helper.
application_helper.rb
car il pourrait causer de la confusion. Peut-être justelib/task_helpers.rb
serait mieux.