Ich habe ein Profile
Modell, das: siehtWie ändere ich den Namen des Dateifeldes in simple_form, wenn eine Datei existiert?
<%= f.simple_fields_for :transcripts do |transcript| %>
<%= render 'transcript_fields', f: transcript %>
<% end %>
Und die app/views/profiles/_transcript_fields.html.erb
wie folgt aus::
has_many :transcripts, dependent: :destroy
accepts_nested_attributes_for :transcripts, allow_destroy: true
Also auf meinem app/views/profiles/_form.html.erb
, ich habe folgendes
<%= f.file_field :attachment, class: 'col-lg-4 form-control' %>
Also, was ich Wollen Sie tun, ist auf der _transcript_fields
teilweise, wenn die profile
hat, ich möchte, dass es ein Dateifeld anzeigt, das den Namen der angehängten Datei hat - auf diese Weise können sie, wenn sie die angefügte Datei ändern wollen, auf denselben file_field
klicken und den Transcript-Datensatz aktualisieren.
ich die eigentliche Update-Vorgang arbeitet jetzt haben, aber was passiert ist, es zeigt nur die Felder wie folgt aus:
Wo die oben file_field
die vorhandene Datei ist, und der untere reflektiert ein neues Feld, das hinzugefügt werden kann.
Wie eine der Antworten gesagt, ist es nicht möglich. Es ist ein Sicherheitsproblem. Sie müssen einen anderen Weg finden, Ihre Anforderung zu erfüllen. – DickieBoy
Wenn Sie so etwas wie carrierwave verwenden, um mit den Uploads fertig zu werden, können Sie etwas davon tun, da es den Dateinamen usw. beibehalten kann. Leider haben Sie festgestellt, dass Ihr Browser nicht in der Lage sein soll, Dateien im Dateisystem über einen bestimmten Punkt hinaus zu mutieren. Dies ist ein Sicherheitsproblem, mit dem Sie konfrontiert werden.Nachdem Sie das gesagt haben, sobald Sie die hochgeladene Datei Binärdaten in der Controller-Methode haben. Du könntest es an dieser Stelle nennen, was immer du willst, bevor du es beharrst. So können Sie die Manipulation auf der Seite der Rails tun, sobald die Daten persistent sind. – engineerDave