carrierwaveを使用して画像をアップロードするサンプルレールアプリを作成しました。複数の画像をアップロードできます。しかし、今私はそれらを削除したいとき、私はちょうど解決の捜索に忙しかった。ドキュメントでは、@user.remove_avatar!
を使用して単一イメージを削除することができます。しかし、複数の画像を削除するには?搬送波の複数画像を削除する
ご協力いただければ幸いです。 ありがとうございます。 :)
carrierwaveを使用して画像をアップロードするサンプルレールアプリを作成しました。複数の画像をアップロードできます。しかし、今私はそれらを削除したいとき、私はちょうど解決の捜索に忙しかった。ドキュメントでは、@user.remove_avatar!
を使用して単一イメージを削除することができます。しかし、複数の画像を削除するには?搬送波の複数画像を削除する
ご協力いただければ幸いです。 ありがとうございます。 :)
これはほとんどのRailsのやり方ではありませんが、私はこの方法を使っています(他の場所で提案されたコードから変更しました)。これはあなたの単一の画像を削除し
<%= link_to delete_picture_project_path(i: i), method: :delete, confirm: 'Delete?', dataType: 'script', 'data-message' => 'Are you sure?', 'data-severity' => 'danger', :remote => true do %>
<%= image_tag('delete') %>
<% end %>
とルート
resources :projects do
member do
delete 'delete_picture', to: "projects#delete_picture"
end
end
中:I出力、私は(私は画像の位置です)持っているイメージの私の見解では
def delete_picture
@i = params[:i].to_i
remain_images = @project.avatars # copy initial avatars
delete_image = remain_images.delete_at(@i) # delete the target image
delete_image.try(:remove!) # delete image
@project.avatars = remain_images # re-assign back
@project.save
end
複数の画像があります。
私は2階の答えに同意しますが、画像が1つのファイルだけ残っている場合、上記の方法は有効ではありません。私は、以下の方法で問題を解決した。(私はモデルの下でそれをやった。)
def delete_picture(index)
remain_pictures = self.pictures
if remain_pictures.size != 1
delete_picture = remain_pictures.delete_at(index)
delete_picture.remove!
self.pictures = remain_pictures
else
remove_reports!
end
save
end
@user.delete_picture(params[:index].to_i)
複数のファイルをアップロードする必要がある場合は、より柔軟なファイルを直接格納するモデルを作成することをお勧めします。 – YaEvan
私の質問を検討するためのモデル団体のようないくつかのコードが –
@AniketShivamTiwariの感謝を示しました。しかし、私はいくつかの異なるモデルでそれを保存していません。 1つのモデルにjsonとして格納されます。私は、複数の画像をアップロードするために[this](https://github.com/carrierwaveuploader/carrierwave#multiple-file-uploads)をたどった。 – Vishal