Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/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 我的图片正在上传,但似乎哪里也看不到(它根本没有显示)-黑文';我不知道我在哪里';我做错了_Ruby On Rails_Image Processing_Ruby On Rails 4_Imagemagick_Paperclip - Fatal编程技术网

Ruby on rails 我的图片正在上传,但似乎哪里也看不到(它根本没有显示)-黑文';我不知道我在哪里';我做错了

Ruby on rails 我的图片正在上传,但似乎哪里也看不到(它根本没有显示)-黑文';我不知道我在哪里';我做错了,ruby-on-rails,image-processing,ruby-on-rails-4,imagemagick,paperclip,Ruby On Rails,Image Processing,Ruby On Rails 4,Imagemagick,Paperclip,当前正在使用回形针上载图像文件。在我的表单中,我可以轻松地更新/编辑或创建新列表。当我上传图像时,它只显示为断开的链接,当我单击“在新选项卡中打开图像”时,我会收到一条消息说: 没有与[GET]“/assets/images/missing.png匹配的路由 我完全被卡住了,不知道下一步该做什么。如果有人能就该做什么提出一些建议或提示,我将不胜感激 编辑: 这是我的控制器: class ListingsController < ApplicationController before_

当前正在使用回形针上载图像文件。在我的表单中,我可以轻松地更新/编辑或创建新列表。当我上传图像时,它只显示为断开的链接,当我单击“在新选项卡中打开图像”时,我会收到一条消息说:

没有与[GET]“/assets/images/missing.png匹配的路由

我完全被卡住了,不知道下一步该做什么。如果有人能就该做什么提出一些建议或提示,我将不胜感激

编辑:

这是我的控制器:

class ListingsController < ApplicationController
  before_action :set_listing, only: [:show, :edit, :update, :destroy]

  # GET /listings
  # GET /listings.json
  def index
    @listing = Listing.all
  end

  # GET /listings/1
  # GET /listings/1.json
  def show
  end

  # GET /listings/new
  def new
    @listing = Listing.new
  end

  # GET /listings/1/edit
  def edit
  end

  # POST /listings
  # POST /listings.json
  def create
    @listing = Listing.create( listing_params )
    respond_to do |format|
      if @listing.save
        format.html { redirect_to @listing, notice: 'Listing was successfully created.' }
        format.json { render action: 'show', status: :created, location: @listing }
      else
        format.html { render action: 'new' }
        format.json { render json: @listing.errors, status: :unprocessable_entity }
      end
    end
  end

  # PATCH/PUT /listings/1
  # PATCH/PUT /listings/1.json
def update
    @listing = Listing.find(params[:id]) #find item you want to update
    respond_to do |format|
      if @listing.update_attributes(listing_params[:id]) # the refer to it and update it
        format.html { redirect_to @listing, notice: 'Listing was successfully updated.' }
        format.json { head :no_content }
      else
        format.html { render action: 'edit' }
        format.json { render json: @listing.errors, status: :unprocessable_entity }
    end
  end
end 



  # DELETE /listings/1
  # DELETE /listings/1.json
  def destroy
    @listing.destroy
    respond_to do |format|
      format.html { redirect_to listings_url }
      format.json { head :no_content }
    end
  end

  private
    # Use callbacks to share common setup or constraints between actions.
    def set_listing
      @listing = Listing.find(params[:id])
    end

    # Never trust parameters from the scary internet, only allow the white list through.
    def listing_params
      params.require(:listing).permit(:name, :description, :price, :image)
    end
end

你好@USERsomenumbers

在的文档中,他们展示了模型的外观示例(listing.rb)

正如您看到的,对于所有以
:image
开头的符号,值为
nil
,因此这意味着用户没有上传图像,rails将查找在
:default\u url
中设置的图像

此外,您的_form.html.erb上也应该有这一行

<%= form_for @listing,  :url => listings_path, :html => { :multipart => true } do |f| %>
listings_path,:html=>{:multipart=>true}do | f |%>
我不确定rails是否保存了图像路径

Rails/Paperclip不会保存图像路径-Paperclip将具有文件夹/文件结构,用于保存您需要的文件(默认为
public/system

回形针的工作原理是将文件转换为对象并将以下信息保存到数据库中:

  • 附件\u文件\u名称
  • 附件内容类型
  • 附件\u文件\u大小
  • 附件(更新)(网址:
这意味着您的问题不太可能与缺少曲别针的
图像路径有关。曲别针实际上只是将图像对象附加到记录中的一种方式,允许您执行以下操作:

@post = Post.find 1
@post.image.url

验证

我认为你的问题在于你的工作

回形针4引入了一种新的验证类型,在上传之前检查文件欺骗(基本上检查文件类型)。解决此问题的方法是使用以下验证:

#app/models/listing.rb
class Listing < ActiveRecord::Base
  has_attached_file :image, :styles => { :medium => "300x300>", :thumb => "100x100>" }, :default_url => "/images/:style/missing.png"
  validates_attachment_content_type :image, :content_type => /\Aimage\/.*\Z/
end
#app/models/listing.rb
类列表{:medium=>“300x300>”,:thumb=>“100x100>”},:default\u url=>“/images/:style/missing.png”
验证\u附件\u内容\u类型:图像,:内容\u类型=>/\Aimage\/.\Z/
结束

您的其他代码看起来不错-我认为问题在于您的文件未正确验证,导致无法保存。要么是这样,要么是您错误地调用了该文件

发布了您的控制器和模型。当您上载图像时,rails是否在您的数据库中保存了图像路径。您是否可以发布一份开发日志以查看第仪表正在处理。@tirdadc我现在已将我的控制器和模型发布到我的原始帖子中。@PapoucheGuinslyzinho我不确定rails是否保存了图像路径-我想我没有指定一个路径…我如何检查?我现在已将开发日志发布到我的原始帖子中。感谢您向我展示如何验证上载是否保存。我已经添加了一个默认的url,但仍然收到相同的列表。上面发布的最后一条消息…这是否意味着我的应用程序没有完全“识别”回形针正在做什么?谢谢你的建议。我添加了validates_attachment_content_类型,但似乎没有什么区别。你怀疑我调用的文件不正确?谢谢你的建议edback!!我怀疑您在视图中调用的图像不正确。您调用的是
@object.image.url
?我将其称为
好的,谢谢!!您能确认您的数据库中存在图像吗?如果是,则表示回形针正在保存,如果不是,则表示回形针仍然存在问题!根据
列表。最后所有图像字段都返回为零,因此我认为它没有保存,即使它说“您的列表已成功更新”
2.1.0 :001 > Listing.last
  Listing Load (0.3ms)  SELECT "listings".* FROM "listings" ORDER BY "listings"."id" DESC LIMIT 1
 => #<Listing id: 3, name: "34", description: "54", price: #<BigDecimal:93f0120,'0.77E2',9(27)>, created_at: "2014-06-09 06:02:20", updated_at: "2014-06-09 06:02:20", image_file_name: nil, image_content_type: nil, image_file_size: nil, image_updated_at: nil> 
<%= form_for @listing,  :url => listings_path, :html => { :multipart => true } do |f| %>
@post = Post.find 1
@post.image.url
#app/models/listing.rb
class Listing < ActiveRecord::Base
  has_attached_file :image, :styles => { :medium => "300x300>", :thumb => "100x100>" }, :default_url => "/images/:style/missing.png"
  validates_attachment_content_type :image, :content_type => /\Aimage\/.*\Z/
end