在编辑时显示文件字段值

时间:2013-04-30 08:35:16

标签: ruby-on-rails ruby

上传图片时,一切顺利。 但在编辑时,它不会显示文件字段值。只是一个空的file_field,就像什么都没有。图片标题显示正确。 其他文字是匈牙利文。

enter image description here

_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?

2 个答案:

答案 0 :(得分:0)

我想这是文件字段的默认行为。在编辑特定操作时,文件的id存储在文件字段中,而不是整个值中。 在代码中,我可以看到你已经使用了字段,因此,在post和pic之间建立了一种关系。因此,在仔细检查时,您会发现当您单击“提交”按钮时,Rails会将文件的ID发送到服务器,这表示无需上载或处理图片。但是,如果您在文件字段中选择某个文件,则可以看到它实际上传文件。 Paperclip gem也很好地处理了这个处理。

答案 1 :(得分:0)

您必须使用条件语句来确定文件是否已附加。使用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中有相应的处理方式。