Rails 5:允许javascript从控制器发布图像
我正在通过Javascript向我的控制器发布一个图像(或多个图像)。我使用Carrierwave+Rails 5上传图像 图像出现在参数中,如下所示:Rails 5:允许javascript从控制器发布图像,javascript,ruby-on-rails,carrierwave,Javascript,Ruby On Rails,Carrierwave,我正在通过Javascript向我的控制器发布一个图像(或多个图像)。我使用Carrierwave+Rails 5上传图像 图像出现在参数中,如下所示: <ActionController::Parameters {"file"=><ActionController::Parameters {"0"=>#<ActionDispatch::Http::UploadedFile:0x00007fcc92da6c70 @tempfile=#<Tempfile:/va
<ActionController::Parameters {"file"=><ActionController::Parameters {"0"=>#<ActionDispatch::Http::UploadedFile:0x00007fcc92da6c70 @tempfile=#<Tempfile:/var/folders/3m/9jgntpps1j5gzkm444tq6t400000gn/T/RackMultipart20180208-2884-15wx288.jpeg>, @original_filename="1.jpeg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"file[0]\"; filename=\"1.jpeg\"\r\nContent-Type: image/jpeg\r\n">} permitted: false>, "controller"=>"listings", "action"=>"create"} permitted: false>
class Listing < ApplicationRecord
has_many :pictures, as: :imageable, dependent: :destroy
end
class Picture < ApplicationRecord
belongs_to :imageable, polymorphic: true
mount_uploader :image, ImageUploader
end
这似乎也失败了:
@listing.pictures = params[:file]
ActiveRecord::AssociationTypeMismatch: Picture(#70258317227420) expected, got "0" which is an instance of String(#70258262105620)
@listing.pictures = params[:file]['0']
NoMethodError: undefined method `each' for #<ActionDispatch::Http::UploadedFile:0x00007fcc92da6c70>
@listing.pictures=params[:文件]['0']
NoMethodError:未定义的方法“each”#
我不知道如何从这个帖子请求中添加图片到我的模型中。有什么想法吗
列表和图片之间的关系如下所示:
<ActionController::Parameters {"file"=><ActionController::Parameters {"0"=>#<ActionDispatch::Http::UploadedFile:0x00007fcc92da6c70 @tempfile=#<Tempfile:/var/folders/3m/9jgntpps1j5gzkm444tq6t400000gn/T/RackMultipart20180208-2884-15wx288.jpeg>, @original_filename="1.jpeg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"file[0]\"; filename=\"1.jpeg\"\r\nContent-Type: image/jpeg\r\n">} permitted: false>, "controller"=>"listings", "action"=>"create"} permitted: false>
class Listing < ApplicationRecord
has_many :pictures, as: :imageable, dependent: :destroy
end
class Picture < ApplicationRecord
belongs_to :imageable, polymorphic: true
mount_uploader :image, ImageUploader
end
类列表
提前谢谢 尝试以下操作:
@listing.pictures = params[:file].values.map {|file| Picture.new(image: file)}
请尝试以下操作:
@listing.pictures = params[:file].values.map {|file| Picture.new(image: file)}
给出以下错误:
ActiveRecord::AssociationTypeMismatch:Picture(#7018809373320)应为,Get#为ActionDispatch::Http::UploadedFile(#70188091823640)的实例。
非常感谢!成功了。这比通过Rails的强参数安全吗?简单回答:在这种情况下,没有风险。长答案强参数是荒谬的:给出以下错误:ActiveRecord::AssociationTypeMismatch:Picture(#7018809373320)预期,Get#这是ActionDispatch::Http::UploadedFile(#70188091823640)的一个实例
非常感谢!成功了。这比通过Rails的强参数安全吗?简单回答:在这种情况下,没有风险。长答案强参数是荒谬的: