Utilizzo Formtastic da un po 'di tempo, ed è ottimo per velocizzare l'implementazione dei moduli. Tuttavia, ho un caso speciale in cui ho bisogno di un po 'più di personalizzazione in ciò che viene visualizzato nel mio modulo. Nello specifico, il campo è un modulo di caricamento file per caricare immagini e sul modulo di modifica, voglio mostrare una miniatura della versione corrente dell'immagine che è stata caricata.Esiste un approccio migliore per questo input Formtastic personalizzato in Rails?
Ho questo lavoro, ma è necessario che io uso markup HTML personalizzato, il che significa che ogni volta che Formtastic cambia il formato di output, ho bisogno di aggiornare il mio corrispondente HTML. Ecco quello che ho in questo momento:
<%= form.inputs do %>
<% if form.object.new_record? -%>
<%= form.input :image, :required => true, :hint => 'Maximum size of 3MB. JPG, GIF, PNG.' %>
<% else -%>
<li class="file input required" id="profile_image_input">
<label class="label" for="profile_image">Image</label>
<%= image_tag form.object.image.url(:thumb), :class => 'attachment' %>
<%= form.file_field :image %>
<p class="inline-hints">Maximum size of 3MB. JPG, GIF, PNG.</p>
</li>
<% end -%>
<% end %>
Idealmente, sarebbe bello fare qualcosa di più come il seguente, dove input_html
si presume essere il codice HTML generato per l'ingresso, suggerimento, ecc .:
<%= form.inputs do %>
<%= form.input :image, :required => true, :hint => 'Maximum size of 3MB. JPG, GIF, PNG.' do |input_html| %>
<%= image_tag form.object.image.url(:thumb), :class => 'attachment' unless form.object.new_record? %>
<%= input_html %>
<% end %>
<% end %>
Esiste già qualcosa del genere? O c'è un'altra opzione simile che renderà la mia vita più facile?
Yup, sembra buono. Ho molti input personalizzati che fanno cose del genere, o visualizzo il valore come String in un input disabilitato. –
Sono nuovo alla modifica/aggiunta al codice sorgente. Dove hai inserito la classe AttachmentInput? Hai messo un corso nella cartella lib delle tue rotaie?L'hai messo nella cartella degli input? Se nella cartella degli input come gestisci le diverse versioni? Cosa succederebbe se Justin avesse aggiornato il codice base? – ebbflowgo
@ebbflowgo, ho incollato il codice sopra in 'app/inputs/attachment_input.rb' e funziona. – ShadSterling