He estado usando Formtastic por un tiempo, y es genial para acelerar la implementación de formularios. Sin embargo, tengo un caso especial en el que necesito más personalización en lo que se muestra en mi formulario. Específicamente, el campo es un formulario de carga de archivos para cargar imágenes, y en el formulario de edición, quiero mostrar una miniatura de la versión actual de la imagen que se ha subido.¿Existe un mejor enfoque para esta entrada personalizada de Formtastic en Rails?
Tengo este trabajo, pero requería que utilizo el formato HTML personalizada, lo que significa que en cualquier momento Formtastic cambia el formato de salida, tengo que actualizar mi HTML correspondiente. Esto es lo que tengo en este 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, sería bueno hacer algo más como el siguiente, donde input_html
se supone que es el código HTML generado para la entrada, pista, etc .:
<%= 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 %>
¿Algo como esto ya existe? ¿O hay otra opción similar que hará mi vida más fácil?
Sí, se ve bien. Tengo muchas entradas personalizadas que hacen cosas como esta, o visualizo el valor como una cadena en una entrada deshabilitada. –
Soy nuevo en editar/agregar código fuente. ¿Dónde pusiste la clase AttachmentInput? ¿Pusiste una clase en tu carpeta rails lib?¿Lo pones en la carpeta de entradas? Si está en la carpeta de entradas, ¿cómo maneja las diferentes versiones? ¿Qué pasaría si Justin actualizara la base de código? – ebbflowgo
@ebbflowgo, pegué el código anterior en 'app/inputs/attachment_input.rb' y funciona. – ShadSterling