Qual è il modo migliore per restituire più tag da un Rails Helper?
-
02-07-2019 - |
Domanda
Voglio creare un campo nascosto e creare un collegamento in un helper e quindi inviarli entrambi al mio ERB.
<%= my_cool_helper "something", form %>
Dovresti inserire i risultati di
link_to "something", a_path
form.hidden_field "something".tableize, :value => "something"
Come sarebbe la definizione dell'helper? I dettagli di cosa link_to e form.hidden_field non contano davvero. Ciò che conta è, come posso restituire l'output di due diverse chiamate.
Soluzione
Esistono diversi modi per farlo.
Ricorda che gli helper di rotaie esistenti come link_to
, ecc., hanno appena generato stringhe. Puoi concatenare le stringhe insieme e restituire ciò (che è quello che faccio la maggior parte delle volte, se le cose sono semplici).
EG:
link_to( "something", something_path ) + #NOTE THE PLUS FOR STRING CONCAT
form.hidden_field('something'.tableize, :value=>'something')
Se stai facendo cose che sono più complicate, potresti semplicemente mettere quel codice in un parziale e far chiamare il tuo aiutante render: partial
.
Se stai facendo cose più complicate di quelle, allora potresti voler dare un'occhiata a errtheblog's block_to_partial helper, che è piuttosto interessante
Altri suggerimenti
Finora il migliore che mi è venuto in mente è:
def my_cool_helper(name, form)
out = capture { link_to name, a_path }
out << capture { form.hidden_field name.tableize, value => 'something' }
end
C'è un modo migliore?
Se vuoi bufferizzare altri output che oltre alla stringa, puoi usare concat
invece di +
.
vedi questo - http://thepugautomatic.com/2013/06/helpers/