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.

È stato utile?

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/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top