CarrierWave と Nested Form Gem を使用しています。Carrierwave github ページ (https://github.com/jnicklas/carrierwave) の「フォームの再表示全体でアップロードを機能させる」というタイトルのセクションを使用すると、ユーザーが間違いを犯した場合でもキャッシュを正常に保存できます。ファイルが保存されます。初めてページにアクセスして [ファイルのアップロード] をクリックすると、ファイルの名前と、アップロードされたファイルの種類を示す小さなサムネイル アイコンが表示されます。
ただし、再表示するとファイル入力ボタンが空白になり、アイコンが消えます。ただし、有効な情報で再度送信し、ファイル入力ボタンをそのままにしておくと、新しいリソースが作成されるため、そこにあることはわかっています。これが私のコードのスニペットです。
<%= nested_form_for @resource, :html=>{:multipart => true } do |f| %>
<p>
<%= f.label :title %><br />
<%= f.text_field :title %>
</p>
<%= f.fields_for :attachments do |attachment_form| %>
<p>
<%= attachment_form.label :file %>
<% if !attachment_form.object.file.path.blank? %>
<% file_info = get_cache_file_info attachment_form.object.file.path %>
<%= image_tag(File.join('/tmp/cache/', file_info[:folder])) #THIS DISPLAY CORRECTLY %>
<% end %>
<%= attachment_form.file_field :file %>
<%= attachment_form.hidden_field :file_cache %>
</p>
<%= attachment_form.link_to_remove "Remove this attachment" %>
<% end %>
<%= f.link_to_add "Add attachment", :attachments %>
<p><%= f.submit %></p>
<% end %>
アイコンを表示するためにHTMLファイルの入力を編集する必要があるのか 、それとも他のRails Wayでこれを処理する必要があるのか 疑問に思っています。また、image_tag は正しく表示されますが、ユーザーがテキスト ファイルをアップロードするアプリケーションでは、画像はあまり役に立ちません。
前もって感謝します!
更新 「input」タグの値を次のように設定しようとしました:
<%= attachment_form.file_field :file, :value => "#{File.join(file_info[:folder], '/',attachment_form.object.file.identifier)}" %>
それもうまくいきませんでした。「input」タグの値は正しく設定されていますが、「ファイルが選択されていません」と表示されます。