1

Ruby on Rails 3.0.11 と Capybara 1.1.2 で受け入れテストを行っており、フォームで 2 つのチェックボックスを選択しようとしています。

チェックボックスのビュー コードは次のとおりです (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"]

複数のチェックボックスを選択すると、カピバラが何か間違ったことをしているようです。アイデア?

4

0 に答える 0