Tôi đã sử dụng Formtastic một thời gian, và nó thật tuyệt vời để đẩy nhanh quá trình triển khai biểu mẫu. Tuy nhiên, tôi có một trường hợp đặc biệt mà tôi cần thêm một số tùy chỉnh trong những gì được hiển thị trong biểu mẫu của tôi. Cụ thể, trường là biểu mẫu tải lên tệp để tải lên hình ảnh và trên biểu mẫu chỉnh sửa, tôi muốn hiển thị hình thu nhỏ của phiên bản hiện tại của hình ảnh đã được tải lên.Có cách nào tốt hơn cho đầu vào Formtastic tùy chỉnh này trong Rails không?
Tôi đã có làm việc này, nhưng nó đòi hỏi mà tôi sử dụng đánh dấu HTML tùy chỉnh, có nghĩa là bất cứ lúc nào Formtastic thay đổi định dạng đầu ra, tôi cần phải cập nhật phù hợp với HTML của tôi. Đây là những gì tôi đã có ngay bây giờ:
<%= 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 %>
Lý tưởng nhất, nó sẽ được tốt đẹp để làm một cái gì đó nhiều hơn như sau, nơi input_html
được giả định là HTML được tạo ra cho các đầu vào, gợi ý, v.v .:
<%= 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 %>
Có điều gì như thế này đã tồn tại không? Hoặc là có một lựa chọn tương tự mà sẽ làm cho cuộc sống của tôi dễ dàng hơn?
Yup, có vẻ tốt. Tôi có rất nhiều đầu vào tùy chỉnh thực hiện các công cụ như thế này hoặc hiển thị giá trị dưới dạng Chuỗi trong đầu vào bị tắt. –
Tôi mới chỉnh sửa/thêm vào mã nguồn. Bạn đã đặt lớp AttachmentInput ở đâu? Bạn đã đặt một lớp học trong thư mục lib thư của bạn?Bạn đã đặt nó vào thư mục đầu vào chưa? Nếu trong thư mục đầu vào, bạn quản lý các phiên bản khác nhau như thế nào? Điều gì sẽ xảy ra nếu Justin cập nhật mã cơ sở? – ebbflowgo
@ebbflowgo, tôi đã dán mã ở trên vào 'app/input/attachment_input.rb' và nó hoạt động. – ShadSterling