У меня бегут рельсы 3 и скрепка 2.3.4. В разработке под OS X все работает отлично, но в производстве есть некоторые проблемы, которые я не могу до конца понять. Если у кого-то есть предложения, пожалуйста, дайте мне знать.
Я загружаю файл, используя Flash BTW. Как я уже сказал, местное развитие прекрасно работает.
Я проверил журнал производства, и похоже, что POST происходит нормально.
Started POST "/addimage" for 10.0.136.119 at 2011-01-13 19:49:09 +0000
Processing by BowlsController#create as HTML
Parameters: {"Filename"=>"IMG_0585.JPG", "fbid"=>"123456789", "Filedata"=>#<ActionDispatch::Http::UploadedFile:0x000000054afdf8 @original_filename="IMG_0585.JPG", @content_type="application/octet-stream", @headers="Content-Disposition: form-data; name=\"Filedata\"; filename=\"IMG_0585.JPG\"\r\nContent-Type: application/octet-stream\r\n", @tempfile=#<File:/tmp/RackMultipart20110113-23741-bhze8q>>, "Upload"=>"Submit Query"}
Completed 200 OK in 64ms (Views: 0.4ms | ActiveRecord: 0.9ms)
Вот действие в рельсах, которое я называю
def create
@user = User.find_by_fbid(params[:fbid])
if @user.nil?
#create user and register if user does not exist
@user = User.new( :fbid => params[:fbid] )
@user.save
end
if params[:Filedata]
@image = @user.images.build()
@image.swfupload_file = params[:Filedata]
if @image.save
render :json => { :data => @image, :success => true }
else
render :json => { :info => "error", :success => false }
end
else
@image = Image.new params[:img]
if @image.save
render :json => { :data => @bowl, :success => true }
else
render :json => { :info => "error", :success => false }
end
end
end
end
Обычно у пользователя может быть много изображений, поэтому я должен убедиться, что он существует. Если они не существуют, я сначала создаю нового пользователя.
У меня также есть другой метод, который позволяет мне получить путь к последнему изображению, загруженному пользователем, который также возвращает ошибку при производстве.
def last_img
@user = User.find_by_fbid(params[:fbid])
if @user.nil?
render :json => { :error => "no bowls for this user" }
else
bowl = @user.images.first
render :json => { :img_path => image.img.url}
end
end
ошибка, которую я получаю за это следующее
NoMethodError в ImagesController # last_image
неопределенный метод img для nil: NilClass