Ich habe für eine Weile jetzt Formtastic verwenden, und es ist toll für die Umsetzung von Formen zu beschleunigen. Allerdings habe ich einen Spezialfall, bei dem ich etwas mehr anpassen muss, was in meinem Formular angezeigt wird. Insbesondere ist das Feld ein Datei-Upload-Formular zum Hochladen von Bildern, und auf dem Bearbeitungsformular möchte ich ein Miniaturbild der aktuellen Version des Bildes anzeigen, das hochgeladen wurde.Gibt es einen besseren Ansatz für diese benutzerdefinierte Formtastic-Eingabe in Rails?
Ich habe diese Arbeit bekam, aber es erforderlich, dass ich benutzerdefinierte HTML-Markup verwenden, was bedeutet, dass jederzeit Formtastic das Ausgabeformat ändert, muss ich meine passende HTML-Dateien zu bearbeiten. Hier ist, was ich jetzt habe:
<%= 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 %>
Idealerweise wäre es schön, etwas mehr wie die folgenden zu tun, wo input_html
angenommen wird, die erzeugte HTML-Code für die Eingabe, Hinweis sein, 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 %>
Gibt es so etwas schon? Oder gibt es eine andere ähnliche Option, die mein Leben erleichtern wird?
Yup, sieht gut aus. Ich habe viele benutzerdefinierte Eingaben, die sowas machen oder den Wert als String in einer deaktivierten Eingabe anzeigen. –
Ich bin neu beim Bearbeiten/Hinzufügen zum Quellcode. Wo hast du die AttachmentInput-Klasse platziert? Hast du eine Klasse in deinen rails lib Ordner gelegt?Hast du es in den Input-Ordner gelegt? Wie verwalten Sie im Input-Ordner die verschiedenen Versionen? Was würde passieren, wenn Justin die Codebasis aktualisieren würde? – ebbflowgo
@ebbflowgo, Ich habe den obigen Code in 'app/inputs/attachment_input.rb' eingefügt und es funktioniert. – ShadSterling