当文件存在时,如何在simple_form中更改文件字段的名称?

时间:2016-11-17 09:07:24

标签: ruby-on-rails simple-form ruby-on-rails-5

我有一个Profile模型:

  has_many :transcripts, dependent: :destroy
  accepts_nested_attributes_for :transcripts, allow_destroy: true

所以在我的app/views/profiles/_form.html.erb上,我有以下内容:

      <%= f.simple_fields_for :transcripts do |transcript| %>
        <%= render 'transcript_fields', f: transcript %>
      <% end %>

app/views/profiles/_transcript_fields.html.erb看起来像这样:

<%= f.file_field :attachment, class: 'col-lg-4 form-control' %>

所以我要做的是在_transcript_fields部分,当profile存在transcripts时,我希望它显示一个附加文件名的文件字段 - 这样,如果他们想要更改附加的文件,他们只需点击同一个file_field上传,它就会更新该脚本记录。

我现在正在进行实际的更新操作,但会发生的是,它只显示如下字段:

enter image description here

顶部file_field是现有文件,底部反映了可以添加的新字段。

2 个答案:

答案 0 :(得分:6)

你不能。

设置文件输入值的唯一方法是当用户从他的系统中选择一个文件时。如果你强行这样做,它将在HTML中像这样。

<form name="foo" method="post" enctype="multipart/form-data">
  <input type="file" value="c:/rails.png">
</form>

这是出于安全原因。否则,您将能够创建一个自动从客户端计算机上传特定文件的Javascript,但如果您想要上传文件字段的某些编辑功能,您可能想要做的是:

  1. 只需打印文件名或网址即可显示此字段的当前值,只需点击一下即可下载该图片,或者是否为图片:只显示该图片,可能是缩略图。
  2. 要上传新文件的file_field。
  3. 一个复选框,选中此复选框后,将删除当前上传的文件。请注意,没有办法上传空的&#39;文件,所以你需要这样的东西来清除字段的价值。
  4. 希望我回答你的问题。

答案 1 :(得分:2)

*.log部分中,您可以检查当前_transcript_fields对象是否已被保留。基于此,可以呈现不同的东西。

类似的东西:

transcript