Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.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
Ruby on rails 使用carrierwave在rails上上载图像_Ruby On Rails_Carrierwave_Minimagick - Fatal编程技术网

Ruby on rails 使用carrierwave在rails上上载图像

Ruby on rails 使用carrierwave在rails上上载图像,ruby-on-rails,carrierwave,minimagick,Ruby On Rails,Carrierwave,Minimagick,所以我正在rails上开发一个简单的分类广告应用程序。我正在尝试通过carrierwave和minimagick实现图像上传,这是一个很好的文档,我已经在线学习了很多教程,它们或多或少都为使用rails和SQlite开发的应用程序提供了相同的解决方案 在实现我的代码后,我没有收到任何错误消息或警告,它只是不上传图像。当我使用DB Browser for SQlite查找我的数据库时,除了显示null的图像外,其他所有字段都会相应地填写 我不包括图像属性作为一个单独的模型。我希望他们只是我的广告模

所以我正在rails上开发一个简单的分类广告应用程序。我正在尝试通过carrierwave和minimagick实现图像上传,这是一个很好的文档,我已经在线学习了很多教程,它们或多或少都为使用rails和SQlite开发的应用程序提供了相同的解决方案

在实现我的代码后,我没有收到任何错误消息或警告,它只是不上传图像。当我使用DB Browser for SQlite查找我的数据库时,除了显示null的图像外,其他所有字段都会相应地填写

我不包括图像属性作为一个单独的模型。我希望他们只是我的广告模式的一部分

这是我在Stackoverflow上的第一篇文章,所以请耐心听我说。除了上传图片,其他一切都正常

new.html.erb

<div class="new_ad_form row">
<div class="col-lg-6 col-lg-offset-3">

 <%= form_for(@ad, :html => { :multipart => true }) do |f|%> 
 <%= render 'layouts/shared/error_messages', object: f.object %>
    <div class= "new_ad_field">
    <%= f.label "title:" %>  <!-- f.object here refers to @ad -->
    <%= f.text_field :title %><br>
    </div>
    <div class= "new_ad_field">
    <%= f.label :category %>
    <%= f.select :category, @categories %><br>
    </div>
    <div class= "new_ad_field">
    <%= f.label :price %>
    <%= f.number_field(:price, in: 1.0..1000000, step: 0.5) %>
    </div>
    <div class= "new_ad_field">
    <%= f.label :description %>
    <%= f.text_area :description, size: "30x5" %>
    </div>
    <div class= "new_ad_field">
    <%= f.label :address %>
    <%= f.text_field :address %><br>
    </div>
    <div class= "new_ad_field">
    <%= f.label :state %>
    <%= f.select :state, @states, {}, :onChange=>"javascript: 
    $dc.select_city();" %>
    </div>
    <div class= "new_ad_field">
    <%= f.label :city %>
    <%= f.select :city, @cities %><br>
    </div>
    <div class="field">
        <%= f.label :images %><br>
        <%= f.file_field :images, :multiple => true %>
    </div>
    <div style="text-align: center"><%= f.submit "Post ad", class: "btn btn-
       large btn-primary" %></div>
 <% end %>
</div>
</div>
config/initializers/carrier_wave.rb

require 'carrierwave'
require 'carrierwave/orm/activerecord'
以下是命令行日志的详细信息。基本上,我正在试图弄清楚它为什么要回滚事务

Started POST "/ads" for 127.0.0.1 at 2017-06-19 14:22:00 -0400
Processing by AdsController#create as HTML
  Parameters: {"utf8"=>"✓", 
"authenticity_token"=>"7ehxs5JEkuhVasFB0m8VQkVbPLEc1+q/xPJQMD1H5Fblw==", 
"ad"=>{"title"=>"sdasdfasdfaasdf", 
"category"=>"Electronic equipment", "price"=>"500", 
"description"=>"asdfasdfasdfwetqwerfasdfasdcvzx", 
"address"=>"asdfafawefasdfadf", "state"=>"Kaduna", "city"=>"Zaria", 
"images"=>[#
<ActionDispatch::Http::UploadedFile:0x0000001041d1a0 @tempfile=#
<Tempfile:C:/Users/SAMSUNG/AppData/Local/Temp/RackMultipart20170619-8456-
1i97f2t.jpg>, 
@original_filename="394502_10152051195495464_1783658057_n.jpg", 
@content_type="image/jpeg", @headers="Content-Disposition: form-data; 
name=\"ad[images][]\"; 
filename=\"394502_10152051195495464_1783658057_n.jpg\"\r\nContent-Type: 
image/jpeg\r\n">]}, "commit"=>"Post ad"}
  User Load (1.0ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = ? 
ORDER BY "users"."id" ASC LIMIT ?  [["id", 24], ["LIMIT", 1]]
   (0.0ms)  begin transaction
   (0.0ms)  rollback transaction
No template found for AdsController#create, rendering head :no_content
Completed 204 No Content in 1706ms (ActiveRecord: 1.0ms)

你需要在config/application.rb文件中添加一些代码


我认为它可以工作。这个

你需要在config/application.rb文件中添加一些代码


我认为这一行很有效,我认为您需要更改代码中的以下行:

mount_上传器:图像,图像上传器

mount_uploader应该像这样进行多元化:


mount_uploaders:images,ImagesUploader

我认为您需要更改代码中的以下行:

mount_上传器:图像,图像上传器

mount_uploader应该像这样进行多元化:


mount_uploaders:images,ImagesUploader

谢谢Velu但是这并没有解决问题,我的'config/initializers/carrier_wave.rb'文件中已经有了那段代码谢谢Velu但是这并没有解决问题,我的'config/initializers/carrier_wave.rb'文件中已经有了那段代码
class ImagesUploader < CarrierWave::Uploader::Base

 include CarrierWave::MiniMagick

 storage :file

    def store_dir
      "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
    end

   version :thumb do
     process :resize_to_fit => [50, 50]
   end

   def extension_white_list
     %w(jpg jpeg gif png)
   end

end
....................
  gem 'carrierwave' 
  gem 'mini_magick'
....................
require 'carrierwave'
require 'carrierwave/orm/activerecord'
Started POST "/ads" for 127.0.0.1 at 2017-06-19 14:22:00 -0400
Processing by AdsController#create as HTML
  Parameters: {"utf8"=>"✓", 
"authenticity_token"=>"7ehxs5JEkuhVasFB0m8VQkVbPLEc1+q/xPJQMD1H5Fblw==", 
"ad"=>{"title"=>"sdasdfasdfaasdf", 
"category"=>"Electronic equipment", "price"=>"500", 
"description"=>"asdfasdfasdfwetqwerfasdfasdcvzx", 
"address"=>"asdfafawefasdfadf", "state"=>"Kaduna", "city"=>"Zaria", 
"images"=>[#
<ActionDispatch::Http::UploadedFile:0x0000001041d1a0 @tempfile=#
<Tempfile:C:/Users/SAMSUNG/AppData/Local/Temp/RackMultipart20170619-8456-
1i97f2t.jpg>, 
@original_filename="394502_10152051195495464_1783658057_n.jpg", 
@content_type="image/jpeg", @headers="Content-Disposition: form-data; 
name=\"ad[images][]\"; 
filename=\"394502_10152051195495464_1783658057_n.jpg\"\r\nContent-Type: 
image/jpeg\r\n">]}, "commit"=>"Post ad"}
  User Load (1.0ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = ? 
ORDER BY "users"."id" ASC LIMIT ?  [["id", 24], ["LIMIT", 1]]
   (0.0ms)  begin transaction
   (0.0ms)  rollback transaction
No template found for AdsController#create, rendering head :no_content
Completed 204 No Content in 1706ms (ActiveRecord: 1.0ms)
require 'carrierwave'
require 'carrierwave/orm/activerecord'