1

我正在使用 Capybara 1.1.2 对 Ruby on Rails 3.0.11 进行验收测试,并尝试在表单中选择两个复选框。

这是复选框的视图代码(使用 haml 3.1.3 和 simple_form 2.0.4):

  = f.input :countries,
            :collection => MusicTeaser.teaser_countries,
            :as => :check_boxes

该集合如下所示:

[["AT", "at"], ["CH", "ch"], ["DE", "de"], ["ZA", "za"]]

生成的 HTML:

<div class="input check_boxes optional">
  <label class="check_boxes optional control-label">Countries</label>
  <label class="checkbox">
    <input class="check_boxes optional" id="music_teaser_countries_at" name="music_teaser[countries][]" type="checkbox" value="at">AT
  </label>
  <label class="checkbox">
    <input class="check_boxes optional" id="music_teaser_countries_ch" name="music_teaser[countries][]" type="checkbox" value="ch">CH
  </label>
  <label class="checkbox">
    <input class="check_boxes optional" id="music_teaser_countries_de" name="music_teaser[countries][]" type="checkbox" value="de" checked="">DE
  </label>
  <label class="checkbox">
    <input class="check_boxes optional" id="music_teaser_countries_za" name="music_teaser[countries][]" type="checkbox" value="za">ZA
  </label>
  <input name="music_teaser[countries][]" type="hidden" value="">
</div>

选择它们的代码如下所示(非常简单):

  check 'music_teaser_countries_de'
  check 'music_teaser_countries_za'

我希望在提交时,countries参数看起来像这样:

params[:music_teaser][:countries] = ["de", "za"]

但它看起来像这样:

params[:music_teaser][:countries] = ["deza"]

因此,在选择多个复选框时,Capybara似乎在做错了什么。想法?

4

0 回答 0