- откуда появился @bowl? Из предоставленного кода это должно быть всегда

у рельсы 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

Ответы на вопрос(1)

Если это действительно копия вашего живого кода, тоimage.img вероятно, бросил бы исключение в#last_img потому что он, вероятно, не инициализирован (по крайней мере, в коде, который вы предоставили). Но это вызвало бы исключение другого рода, а не ноль: NilClass

В случае, если это опечатка и вы@image.img тогда вопрос такой же - каков рабочий процесс вашего контроллера?#last_img

И еще одно - вы инициализируете локальную переменнуюbowl там и нет смысла в этом?

И последний, теперь в#create - откуда появился @bowl? Из предоставленного кода это должно быть всегдаnil.

Ваш ответ на вопрос