Mam problem z kodowaniem w Ruby 1.9.2 i Capybarą. Strona działa w przeglądarce, więc problem jest gdzieś w testach.
Formularz wygląda następująco:
[code=haml]= form_for @competition, :html => {:multipart => true} do |f|
%p
= f.label :homepage_banner
= f.file_field :homepage_banner
%p
= f.label :partners
- Partner.all.each do |partner|
= check_box_tag ‘competition[partner_ids][]’, partner.id, @competition.partners.include?(partner)
= partner.name[/code]
Integration test:
click_link 'Edit'
attach_file 'Homepage banner', 'spec/fixtures/empty.gif'
click_button 'Save'
page.should have_content 'Competition has been updated'
Jeżeli wykomentuję linijkę attach_file to wszystko działa. Parametry przekazane do kontrolera wyglądają następująco:
code p params[:competition]
{“partner_ids”=>[“4”]}[/code]
Natomiast z linijką attach_file:
code p params[:competition]
{“homepage_banner”=>#ActionDispatch::Http::UploadedFile:0x00000007facdd0, “partner_ids”=>["[“4”]"]}[/code]
partner_ids wygląda na podwójnie wyescapowany, i wszystko się wywraca. Ktoś ma jakiś pomysł co może się dziać? Dodam że plik testu ma dodany “magiczny komentarz” do kodowania - i dodanie/usunięcie go niewiele zmienia.