Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rails 5:允许javascript从控制器发布图像_Javascript_Ruby On Rails_Carrierwave - Fatal编程技术网

Rails 5:允许javascript从控制器发布图像

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

我正在通过Javascript向我的控制器发布一个图像(或多个图像)。我使用Carrierwave+Rails 5上传图像

图像出现在参数中,如下所示:

<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的强参数安全吗?简单回答:在这种情况下,没有风险。长答案强参数是荒谬的: