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,条件可能如下所示(对于只接受一个文件的字段):

<% 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 存储在文件字段中,而不是其整个值。在代码中,我可以看到您已经使用了该字段,因此,post 和 pic 之间将建立关系。因此,仔细检查后,您会发现当您单击“提交”按钮时,Rails 会将文件的 id 发送到服务器,这表明不需要上传或处理图片。但是,如果您在文件字段中选择某个文件,那么您可以看到它实际上传了文件。Paperclip gem 也很好地处理了这种处理。

于 2013-04-30T08:55:27.847 回答