Ruby on rails Rails 5.2如何在选择图像后通过Carrierwave自动上载图像
我使用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
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
Myimg.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块处理这两种类型的请求,您将处理这两种类型的请求。