Загрузка на Ruby on Rails от iPhone с помощью ASIHTTPRequest

Я действительно врезался в стену, и потребность некоторой справки! Слова благодарности для чтения настолько далеко!

Я посреди записи приложения, которое говорит с моим веб-сервером ROR для запросов к базе данных и работает отлично благодаря ActiveResource. Но я теперь должен также загрузить файлы на сервер, и я планирую использовать ASIHTTPRequest, который выглядит большим, моя проблема, хотя, я просто не уверен, как вручить запрос POST на стороне ROR... Я использую скрепку, но действительно врезался в кирпичную стену.

На стороне ASIHTTP я просто пишу:

[request setData:data withFileName:@"photo.jpg" andContentType:@"image/jpeg" forKey:@"asset[image]"];

и на рубиновой стороне я делаю...

class Asset < ActiveRecord::Base
   validates_attachment_presence :image
    has_attached_file :image
end

class AssetsController < ApplicationController  
    protect_from_forgery :only => [:update, :destroy] 
.....

Но это всегда перестало работать, я вполне уверен, это имеет что-то, чтобы сделать с набором данных формы POST, но я полностью застреваю.

Я получаю ошибку:

 Parameters: {"assets"=>{"images"=>#<File:/var/folders/gM/gM15qjM2G3W0iVNaT1evD++++TI/-Tmp-/RackMultipart20091112-2285-2i0qq5-0>}}

NoMethodError (You have a nil object when you didn't expect it!
You might have expected an instance of ActiveRecord::Base.
The error occurred while evaluating nil.[]):
  app/models/asset.rb:2
  app/controllers/assets_controller.rb:46:in

'создать'

Любая справка была бы очень очень с благодарностью получена.

Chris

Спасибо!

8
задан John Wang 7 October 2010 в 17:54
поделиться

1 ответ

The first thing I'd check with doing the upload is setting the parameter name to what file_column (or whatever, personally I'd use Paperclip) is expecting.

If you have something like:

class Entry < ActiveRecord::Base
    file_column :image
end

You'll need to make sure the parameter (form field name) corresponds to what is expected. For the above example this would be:

name="entry[image]"

Also, make sure you're doing a multipart form post, not just the standard.

1
ответ дан 6 December 2019 в 02:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: