Ruby on rails Rails 5.2如何在选择图像后通过Carrierwave自动上载图像

Ruby on rails Rails 5.2如何在选择图像后通过Carrierwave自动上载图像,ruby-on-rails,ruby-on-rails-5,carrierwave,Ruby On Rails,Ruby On Rails 5,Carrierwave,我使用Carrierwave将图像上传到多态表 使用以下代码,我可以正确上传和显示图像 但现在我想在new.html.erb中选择图像后自动上传和显示图像。换句话说,我想跑步 Attachment.create(:Attachment=>params[:Attachment],:attachmentable=>@img)如果params[:Attachment] 在img创建操作之前,在我选择图像之后 我该如何处理这些代码?非常感谢你给我指导 我的部分代码如下: 我的Gemfiles: gem

我使用Carrierwave将图像上传到多态表

使用以下代码,我可以正确上传和显示图像

但现在我想在
new.html.erb
中选择图像后自动上传和显示图像。换句话说,我想跑步

Attachment.create(:Attachment=>params[:Attachment],:attachmentable=>@img)如果params[:Attachment]

在img
创建
操作之前,在我选择图像之后

我该如何处理这些代码?非常感谢你给我指导

我的部分代码如下:

我的
Gemfiles

gem 'rails', '~> 5.2'
gem 'carrierwave', '~> 1.2', '>= 1.2.2'
gem 'mini_magick'
class Img < ActiveRecord::Base
  has_many :attachments, as: :attachmentable, :dependent => :destroy
end
class Attachment < ApplicationRecord
  mount_uploader :attachment, ImageUploader
  belongs_to :attachmentable, :polymorphic => true
end
My
img.rb

gem 'rails', '~> 5.2'
gem 'carrierwave', '~> 1.2', '>= 1.2.2'
gem 'mini_magick'
class Img < ActiveRecord::Base
  has_many :attachments, as: :attachmentable, :dependent => :destroy
end
class Attachment < ApplicationRecord
  mount_uploader :attachment, ImageUploader
  belongs_to :attachmentable, :polymorphic => true
end
imgs\U控制器的我的控制器

class ImgsController < ApplicationController

  def index
    @imgs = Img.all
  end

  def show
    @img = Img.find(params[:id])
  end

  def new
    @img = Img.new
  end

  def create
    @img = Img.new(img_params)
    if @img.save
      Attachment.create(:attachment => params[:attachment], :attachmentable =>@img) if params[:attachment]
      redirect_to @img
    end
  end

  def destroy
    @img = Img.find(params[:id])
    @img.destroy
    redirect_to @img
  end

  private

  def img_params
    params.require(:img).permit(:img_name)
  end
end
class ImgsControllerparams[:Attachment],:attachmentable=>@img)
将_重定向到@img
结束
结束
def销毁
@img=img.find(参数[:id])
@毁灭
将_重定向到@img
结束
私有的
def img_参数
参数require(:img).permit(:img_name)
结束
结束
我的imgs html

# new.html.erb

<%= form_for(@img,:html => {:multipart => true}) do |f| %>
  <%= f.text_field :img_name %>
  <%= file_field_tag :attachment %>
  <%= f.submit "upload" %>
<% end %>



# show.html.erb

<% @img.attachments.each do |f| %>
  <%= image_tag f.attachment.url %>
<% end %>
#new.html.erb
{:multipart=>true})do | f |%>
#show.html.erb

根据文章中提到的描述,您希望一旦用户从您希望使用carrierwave将该图像上载到云存储的位置浏览该图像

实现这一点的一种方法是,在用户从系统中浏览完图像后,向控制器发出ajax调用,并将图像远程上传到云端

不必要的:

但是,如果用户在浏览时不断更改图像,您是否会上载每个浏览的图像,而不管您是否会显示该图像或是否需要该图像

解决方法:


您可以使用jquery读取浏览的图像,然后在需要时将图像显示给用户。提交表单后,只有您将图像上传到云存储。

谢谢您的回答,@Rohan。事实上,我想在选择图像后在
红地毯
中自动上传图像,就像选择StackOverflow Markdown和自动上传图像一样,然后在Markdown中调用图像url。所以,为了实现这一点,我必须制作一个Ajax来调用控制器?是否有一种简单的方法调用此操作
Attachment.create(:Attachment=>params[:Attachment],:attachmentable=>@img),如果选择图像后使用params[:Attachment]
?再次感谢,@Rohan~祝福你!嗨,@Rohan,我能把这个动作转换成附件吗?如果参数为附件,我可以创建(:附件=>params[:Attachment],:attachmentable=>@img)到一个
表单吗?如果可以转换,我如何为
编写
表单?就像:
,是否有一种简单的方法来调用此操作..->在表单提交之前调用此操作的最简单方法是使用远程(ajax)调用控制器。我可以转换此操作吗?->因为在表单提交中,您将对该操作进行html调用,而在远程调用中,它将是脚本类型的请求。您可以使用respond_to块处理这两种类型的请求,您将处理这两种类型的请求。