2012-04-22 16 views
12

Tôi muốn tạo trang chỉnh sửa cho biểu mẫu dưới đây. Vấn đề là khi người dùng duyệt đến trang chỉnh sửa, tên thương hiệu và tên được điền sẵn, nhưng trường tải lên hình ảnh hiển thị 'không có tệp được chọn' ngay cả khi hình đại diện tồn tại cho 'kiểu'. Xin vui lòng cho tôi biết nếu có một số cách để khắc phục điều này. Cảm ơn!Cập nhật hình đại diện kẹp giấy trong nhiều đơn giản_form

My Edit Form:

<%= simple_form_for @style, :html => { :class => 'form-horizontal' }, :remote => true do |m| %> 

    <%= m.input :brand_name, :label => 'Brand', :placeholder => 'Brand' %>  
    <%= m.input :name, :label => 'Style', :placeholder => 'Style' %> 
    <%= m.input :avatar, :label => "Image" %> 

    <div class="form-actions" style = "background:none"> 
     <%= m.submit nil, :class => 'btn btn-primary' %> 
     <%= link_to 'Cancel', styles_path, :class => 'btn' %> 
    </div> 

<% end %> 

Trả lời

18

Chỉ cần triển khai ngày hôm qua. Thực hiện một đầu vào tùy chỉnh trong/app/đầu vào

class AvatarInput < SimpleForm::Inputs::FileInput 
def input 
out = '' # the output string we're going to build 
# check if there's an uploaded file (eg: edit mode or form not saved) 
if object.send("#{attribute_name}?") 
    # append preview image to output 
    # <%= image_tag @user.avatar.url(:thumb), :class => 'thumbnail', id: 'avatar' %> 
    out << template.image_tag(object.send(attribute_name).url(:thumb), :class => 'thumbnail', id: 'avatar') 
    end 
# append file input. it will work accordingly with your simple_form wrappers 
    (out << @builder.file_field(attribute_name, input_html_options)).html_safe 
    end 
end 

Sau đó, bạn có thể làm

<%= f.input :avatar, :as => :avatar %> 
+0

Tôi có cần phải ngã ba đá quý và thêm vào simple_form/lib/simple_form/input không? – Abram

+0

Tìm ra chỉ cần đặt nó trong ứng dụng của tôi ... bên trong đầu vào ... GREAT làm việc. – Abram

+0

Yay! Tôi vui vì nó đã thành công. Tôi có được tiền thưởng không? :) – DVG

0

Mã cho/chỉnh sửa quan điểm mới từ paperclip's github page trông như thế này:

<%= form_for :user, @user, :url => user_path, :html => { :multipart => true } do |form| %> 
    <%= form.file_field :avatar %> 
<% end %> 

Vì vậy, có lẽ bạn nên thử m.file_field và bao gồm :html => { :multipart => true } không? Mặc dù cá nhân tôi thích Attachment-Fu.

+0

này là về dạng đơn giản không phải là đường ray –

6

Đây là tất cả những gì cần thiết để làm việc này (trong Haml):

=simple_form_for @user, :html => {:multipart => true } do |f| 
    =f.file_field :image 
Các vấn đề liên quan