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