Ruby on rails 错误:";没有这样的文件或目录;使用carriewave上载图像时

Ruby on rails 错误:";没有这样的文件或目录;使用carriewave上载图像时,ruby-on-rails,Ruby On Rails,我使用的是Rails 4和Ruby 2。我正在尝试使用carrierwave上传一个图像,但得到一个错误“没有这样的文件或目录-XYZ.jpg”。但当我把图像保存在我的应用文件夹中时,它会完美地上传。如果有人对此有任何想法,请帮助我。下面是我的代码: gem文件: 宝石“carrierwave” 报告\u controller.rb def create @site = Site.find(params[:site_id]) @report = @site.reports

我使用的是Rails 4和Ruby 2。我正在尝试使用carrierwave上传一个图像,但得到一个错误“没有这样的文件或目录-XYZ.jpg”。但当我把图像保存在我的应用文件夹中时,它会完美地上传。如果有人对此有任何想法,请帮助我。下面是我的代码:

gem文件: 宝石“carrierwave”

报告\u controller.rb

    def create
    @site = Site.find(params[:site_id])
    @report = @site.reports.build       
    @report.image = File.new(params[:image])
    @report.save
   end
new.html.erb

<div>
  <%= file_field_tag :image %>
</div>
<div class="col-sm-8">
   <span> My Photo:
    <%= image_tag @report.image_url %></span>
</div>

show.html.erb

<div>
  <%= file_field_tag :image %>
</div>
<div class="col-sm-8">
   <span> My Photo:
    <%= image_tag @report.image_url %></span>
</div>

我的照片:

正如您所解释的,原因是无法从系统中的任何其他位置获取,这是404错误。确切地说,我在制作(Heroku)时经历过这种情况,我所做的是更改我的carrierwave图像上传器
store_dir action
以合并在Heroku上存储上传图像的路径

注意如果是在制作中,您还可以在将
store_dir action
附加到该目录并推送之前找到图片上载到的位置

示例--app/uploaders/image\u uploader.rb

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

有关更多信息,请参见

查看此处,如果图像位于应用程序的根文件夹中,则图像将存储在应用程序的publc文件夹中。它不会从系统中的任何其他位置获取。我想您应该定义用于承载外部图像的文件夹。查看自述文件,我如何定义它?这也是在我的控制器中分配它的正确方法@report.image=File.new(参数[:image])