6

写真をアップロードすると、すべてがうまくいきます。ただし、編集時には、ファイル フィールドの値は表示されません。そこには何もないように、空の file_field だけです。写真のタイトルが正しく表示されます。他のテキストはハンガリー語です。

ここに画像の説明を入力

_form.html.haml

= simple_nested_form_for(@post) do |f|
  = f.input :title, label: 'Cím'
  = f.input :body, label: "Test"
  = f.fields_for :pics do |pic_form|
    = pic_form.text_field :title
    %br/
    = pic_form.file_field :image
    = pic_form.link_to_remove "Kép Törlése", class: "btn btn-warning"
    %br/
  %br/
  %p= f.link_to_add "Kép hozzáadása", :pics, class: "btn btn-success"
  %br/
  %br/
  = f.submit "Mentés", class: "btn btn-primary"
= javascript_include_tag :defaults, "nested_form"

既存のファイルを file_field に渡す方法は?

4

2 に答える 2

2

ファイルが添付されているかどうかを確認するには、条件を使用する必要があります。ActiveStorageを使用すると、条件は次のようになります (1 つのファイルのみを受け入れるフィールドの場合)。

<% if @my_object.my_file.attached? %>
  <%= @my_object.my_file.blob.filename %>
<% else %>
  <%= f.file_field :my_file %>
<% end %>

フィールドが多くのファイルを受け入れる場合は、繰り返してファイル名を表示する必要があります。

<% @my_object.my_files.each do |i| %>
  <%= i.filename %><br>
<% end %>

Carrierwave でこれを処理する対応する方法があると確信しています。

于 2019-11-04T15:30:04.950 に答える
0

これがファイルフィールドのデフォルトの動作だと思います。特定のアクションを編集すると、値全体ではなく、ファイルの ID がファイル フィールドに保存されます。コードでは、フィールドを for に使用していることがわかります。したがって、post と pic の間に関係が設定されます。そのため、よく調べてみると、[送信] ボタンをクリックすると、Rails がファイルの ID をサーバーに送信することがわかります。これは、写真をアップロードまたは処理する必要がないことを示しています。ただし、ファイル フィールドでファイルを選択すると、実際にファイルがアップロードされていることがわかります。この処理は、Paperclip gem でもうまく処理されます。

于 2013-04-30T08:55:27.847 に答える