En utilisant le met dans les rails
J'ai ce code dans le contrôleur:
array = ["asd", "asd", "asd"]
@print = array.each do |i|
puts "Random text #{i}"
end
Et maintenant je veux l'imprimer en quelques pages comme show.html.erb:
<%= @print >
Et j'obtiens ceci: ["asd", "asd", "asd"]
Mais Dans le contrôleur je sayd à puts
chaque objet dans la gamme, mais il ne le fait pas?
Vous devez vous connecter pour publier un commentaire.
La
puts
méthode est utilisée pour l'impression d'une chaîne à la console. Si vous souhaitez définir chacune des valeurs de la matrice à une certaine valeur afin de l'imprimer plus tard, vous devez utiliser#map
.Maintenant, à votre avis, il faut ajouter:
Random text asd Random text asd Random text asd ["Random text asd", "Random text asd", "Random text asd"]
Mais après qu'il imprime le tableau sur le dessus de tout. Pourquoi est-ce?<%= @print ..
au lieu de<% @print ...
là?Vous devriez être en train de faire la boucle dans votre point de vue. Cela permet de maintenir la séparation entre la logique de l'application et de votre code de vue.
Contrôleur
Vue
<% @array.each do | i | %>
puts
imprime sur la sortie standard stdout (sortie standard) que, dans la majorité des cas, correspond à la console où vous avez lancé le serveur Rails.Vérifier la console et vous trouverez, dans le milieu de la demande des journaux, aussi le résultat de la
puts
déclaration.Une meilleure façon d'imprimer quelque chose à partir de la console est d'utiliser les Rails enregistreur, surtout si vous voulez de sortie à être enregistrés dans les journaux de la production.
En supposant que c'est juste pour le débogage, puis c'est bien d'utiliser
puts
(oup
).il semble que la variable @print est la matrice. Le contrôleur est organisé une fois par chargement de la page, puis de la sortie de son contenu à la fin de la vue. De Plus, "met" est pour l'impression d'une chaîne à la console. Vous devriez mettre la boucle en question dans la vue comme: