上传图片时,一切顺利。 但在编辑时,它不会显示文件字段值。只是一个空的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?
答案 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中有相应的处理方式。