13

以下のフォームの編集ページを作成したいと思います。問題は、ユーザーが編集ページを参照すると、ブランド名と名前が事前に入力されているのに、「スタイル」のアバターが存在する場合でも、画像アップロードフィールドに「ファイルが選択されていません」と表示されることです。これを改善する方法があれば教えてください。ありがとう!

私の編集フォーム:

<%= 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 %>
4

3 に答える 3

19

昨日実装したばかりです。/app/inputs でカスタム入力を作成します

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

それからあなたはすることができます

<%= f.input :avatar, :as => :avatar %>
于 2012-05-25T02:16:41.653 に答える
6

これが機能するために必要なのはこれだけです(hamlで):

=simple_form_for @user, :html => {:multipart => true } do |f|
  =f.file_field :image
于 2013-06-05T00:25:58.350 に答える
0

paperclip の github ページからの新規/編集ビューのコードは次のようになります。

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

それで、あなたも試しm.file_fieldてみるべき:html => { :multipart => true }ですか?個人的にはAttachment-Fu の方が好きですが。

于 2012-05-25T02:12:04.667 に答える