Quel est le meilleur moyen de renvoyer plusieurs tags à partir d'un assistant Rails?

StackOverflow https://stackoverflow.com/questions/112197

  •  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.

Était-ce utile?

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/

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top