0

私の見解

  <%= form_tag({:action => 'upload_image', :car_id => @car.id}, :multipart => true) do %>
    <label for="upload_file"><%= t('field.select_image') %></label>
    <%= file_field 'upload', 'datafile' %>&nbsp;<%= submit_tag t('field.upload_file') %>
  <% end %>

私のコントローラー

  def upload_image   
    if params[:upload].present? && params[:car_id].present?
      DataFile.save_image_file(params[:upload][:datafile], params[:car_id]) # My methods to save image and other operations with file

    end
    redirect_to images_path(:car_id => params[:car_id])
  end

私のRspecテスト(機能しません)

before :each do
  @car = FactoryGirl.create(:car)
  @file = fixture_file_upload('/files/test-bus-1.jpg', 'image/jpg')

end

it "can upload a car" do
  post :upload_image, :upload => @file, :car_id => @car.id
  response.should redirect_to images_path(:car_id => @car.id)
end

エラー:失敗/エラー:post:upload_image、:upload => @file、:car_id => @ car.id NoMethodError:undefined method `[]'for#File:/tmp/test-bus-1.jpg20120826-29027- plg28d

どうしたの?

4

1 に答える 1

1

フォームの設定方法(呼び出しているためparams[:upload][:datafile])に基づいて、rspecテストを次のように変更する必要があるように見えます。

post :upload_image, :upload => { :datafile => @file }, :car_id => @car.id
于 2012-08-26T10:04:22.173 に答える