如何解决Rails回形针图像URL上传不起作用
| 我正在尝试创建一些图片网址上传。我的文件上传字段有效,但是当我提交URL时,它将提交并呈现我的indeks页面,并且没有图像上传。 这是我的模型:class Konkurrancer < ActiveRecord::Base
has_attached_file :photo,:url => \"/public/images/billeder/photo/:id/:basename.:extension\",:path => \":rails_root/public/images/billeder/photo/:id/:basename.:extension\"
has_attached_file :photo2,:url => \"/public/images/billeder/photo2/:id/:basename.:extension\",:path => \":rails_root/public/images/billeder/photo2/:id/:basename.:extension\"
attr_accessor :photo_url,:photo_url2
def photo_url=(url)
return if url.blank?
self.photo = RemoteUpload.new(url)
end
def photo_url2=(url)
return if url.blank?
self.photo2 = RemoteUpload.new(url)
end
end
我的控制器:
def new
@konkurrancer = Konkurrancer.new
if !params[:konkurrancer].nil? && !params[:konkurrancer][:photo_url].blank?
# user entered a photo url,use the url
@konkurrancer.photo_remote_url = params[:konkurrancer][:photo_remote_url]
elsif !params[:konkurrancer].nil? && !params[:konkurrancer][:photo]
# use file upload
@konkurrancer.photo = params[:konkurrancer][:photo]
end
if !params[:konkurrancer].nil? && !params[:konkurrancer][:photo_url_2].blank?
# user entered a photo url,use the url
@konkurrancer.photo_remote_url = params[:konkurrancer][:photo_remote_url_2]
elsif !params[:konkurrancer].nil? && !params[:konkurrancer][:photo]
# use file upload
@konkurrancer.photo2 = params[:konkurrancer][:photo2]
end
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @konkurrancer }
end
end
# POST /konkurrancers
# POST /konkurrancers.xml
def create
@konkurrancer = Konkurrancer.new(params[:konkurrancer])
respond_to do |format|
if @konkurrancer.save
format.html { redirect_to(:admin_konkurrancers,:notice => \'Konkurrancer was successfully created.\') }
format.xml { render :xml => :admin_konkurrancers,:status => :created,:location => @konkurrancer }
else
format.html { render :action => \"new\" }
format.xml { render :xml => @konkurrancer.errors,:status => :unprocessable_entity }
end
end
end
我的remote_upload.rb:
require \'open-uri\'
# Make it always write to tempfiles,never StringIO
OpenURI::Buffer.module_eval {
remove_const :StringMax
const_set :StringMax,0
}
class RemoteUpload
attr_reader :original_filename,:attachment_data
def initialize(url)
# read remote data
@attachment_data = open(url)
# determine filename
path = self.attachment_data.base_uri.path
# we need this attribute for compatibility to paperclip etc.
@original_filename = File.basename(path).downcase
end
# redirect method calls to uploaded file (like size etc.)
def method_missing(symbol,*args)
if self.attachment_data.respond_to? symbol
self.attachment_data.send symbol,*args
else
super
end
end
end
我的看法:
<%= simple_form_for [:admin,@konkurrancer],:html => { :multipart => true } do |f| %>
<%= f.input :name,:label => \'Titel\',:style => \'width:500;\' %>
<%= f.label :upload_125x125 %>
<%= f.file_field :photo,:label => \'125x125\',:style => \'width:250;\' %>
<%= f.input :photo_url,:label => \'URL 125x125\',:style => \'width:250;\' %>
<%= f.label :upload_460x60 %>
<%= f.file_field :photo2,:label => \'460x58\',:style => \'width:250;\' %>
<%= f.input :photo_url2,:label => \'URL 460x58\',:style => \'width:250;\' %>
<%= f.button :submit,:value => \'Create konkurrence\' %>
<% end %>
解决方法
我当时正在写一个相当完整的回复,然后发现有人已经写了同样的东西!
在这里,您可以访问:http://trevorturk.com/2008/12/11/easy-upload-via-url-with-paperclip/
这应该正是您要寻找的。如果您跌跌撞撞,请告诉我。
祝好运
,似乎您正在尝试访问与表单中的参数不匹配的参数:
@konkurrancer.photo_remote_url = params[:konkurrancer][:photo_remote_url]
<%= f.input :photo_url,:label => \'URL 125x125\',:style => \'width:250;\' %>
您是否应该在控制器中使用:photo_url而不是:photo_remote_url?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。