Używam Formtastic już od jakiegoś czasu i świetnie nadaje się do przyspieszenia wdrażania formularzy. Jednak mam specjalny przypadek, w którym potrzebuję więcej personalizacji w tym, co jest wyświetlane w moim formularzu. W szczególności pole to formularz przesyłania plików do przesyłania zdjęć, a na formularzu edycji chcę pokazać miniaturę aktualnej wersji obrazu, który został przesłany.Czy istnieje lepsze podejście do tego niestandardowego wejścia Formtastic w Railsach?
mam tej pracy, ale to wymaga, że mogę używać niestandardowych znaczników HTML, co oznacza, że za każdym razem Formtastic zmienia format wyjściowy, muszę zaktualizować pasujący HTML. Oto co mam teraz:
<%= 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 %>
Idealnie byłoby miło zrobić coś więcej jak poniżej, gdzie input_html
zakłada być wygenerowany HTML do wejścia, podpowiedzi itp .:
<%= 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 %>
Czy coś takiego już istnieje? A może jest inna podobna opcja, która ułatwi mi życie?
Tak, wygląda dobrze. Mam wiele niestandardowych danych wejściowych, które robią takie rzeczy, lub wyświetlają wartość jako ciąg w zablokowanym wejściu. –
Jestem nowy w edycji/dodawaniu do kodu źródłowego. Gdzie umieściłeś klasę AttachmentInput? Czy umieściłeś klasę w swoim folderze rails?Czy umieściłeś go w folderze wejściowym? Jeśli w folderze wejściowym w jaki sposób zarządzasz różnymi wersjami? Co by się stało, gdyby Justin zaktualizował bazę kodów? – ebbflowgo
@ebbflowgo, Wkleiłem powyższy kod do 'app/inputs/attachment_input.rb' i to działa. – ShadSterling