Quel est le meilleur moyen de renvoyer plusieurs tags à partir d'un assistant Rails?
-
02-07-2019 - |
Question
Je veux créer un champ caché, créer un lien dans une aide puis transmettre les deux à mon erb.
<%= my_cool_helper "something", form %>
Devrait mettre les résultats de
link_to "something", a_path
form.hidden_field "something".tableize, :value => "something"
À quoi ressemblerait la définition de l’assistant? Les détails de ce que link_to et le formulaire.hidden_field n'ont pas d'importance. L’important est de savoir comment renvoyer la sortie de deux appels différents.
La solution
Il existe plusieurs façons de procéder.
N'oubliez pas que les assistants de rails existants, tels que link_to
, etc., génèrent uniquement des chaînes. Vous pouvez concaténer les chaînes et les renvoyer (ce que je fais la plupart du temps, si les choses sont simples).
EG:
link_to( "something", something_path ) + #NOTE THE PLUS FOR STRING CONCAT
form.hidden_field('something'.tableize, :value=>'something')
Si vous faites des choses plus compliquées, vous pouvez simplement mettre ce code en partie et demander à votre aide d'appeler render: partial
.
Si vous faites des choses plus compliquées que celles-là, alors vous voudrez peut-être regarder le block_to_partial , ce qui est plutôt cool
Autres conseils
Jusqu'à présent, le meilleur que j'ai créé est:
def my_cool_helper(name, form)
out = capture { link_to name, a_path }
out << capture { form.hidden_field name.tableize, value => 'something' }
end
Y a-t-il un meilleur moyen?
Si vous souhaitez mettre en tampon une autre sortie que chaîne, vous pouvez utiliser concat
au lieu de +
.
voir ceci - http://thepugautomatic.com/2013/06/helpers/