2013-04-20 12 views
5

Używam gem_perameters gem with Rails 3.2. Aby przetestować proces przesyłania obrazu, mam przychodzące pocztowego wniosek o parametrach:Jak pozwolić na Rack :: Test :: UploadedFile z silnymi parametrami?

{"photo"=>{"image"=>#<Rack::Test::UploadedFile:0x000000069ce1f8 @content_type="image/png", @original_filename="test.png", @tempfile=#<Tempfile:/tmp/test.png20130420-9529-1xuka4v-1>>, "status"=>"approved", "in_use"=>false}, "controller"=>"member/photos", "action"=>"create"} 

Jak mogę pozwolić atrybut obrazu dla przypisania? Próbowałem;

params.require(:photo).permit(:image) 

ale to nie działa i mówi Validation failed: Image can't be blank.

Po zezwoleniu na wszystkie parametry przy użyciu params.require(:photo).permit! działa poprawnie.

+1

znalazłeś rozwiązanie? utknął z tym też –

Odpowiedz

1

Od http://api.rubyonrails.org/classes/ActionController/Parameters.html

PERMITTED_SCALAR_TYPES = [String, Symbol, NilClass, numeryczna, TrueClass, FalseClass, data, godzina, StringIO, IO, ActionDispatch :: Http :: UploadedFile, Rack :: test :: UploadedFile]

więc wystarczy, aby umożliwić jej jako typu skalarnego:

params.require(:photo).permit(:image) 

Po prostu przetestowane na Rails 4.1.1

+0

Wygląda na to, że problem naprawiono za pomocą Rails 4.1.1. –

+0

Naprawiono to jak rok temu w '4.0.0' https://github.com/rails/rails/pull/9357 – freemanoid

+0

Ponownie sprawdziłem ostatnio problem, więc nie jestem pewien, kiedy go naprawiono. Myślę, że kiedy stanąłem przed tym problemem, Rails 4.0 był wciąż nowy. –

Powiązane problemy