次のような行がたくさんあります。
<input id="car_ids_" name="car_ids[]" value="142" type="checkbox"> Car 142
<input id="car_ids_" name="car_ids[]" value="143" type="checkbox"> Car 143
<input id="car_ids_" name="car_ids[]" value="144" type="checkbox"> Car 144
<input id="car_ids_" name="car_ids[]" value="145" type="checkbox"> Car 145
このレールキャストで見たので、この動作が必要です: http://railscasts.com/episodes/165-edit-multiple?view=asciicast
自分でテストするとうまくいきますが、カピバラでいくつかの要素を選択しようとすると、方法がわかりませんか?
before(:each) do
check "car_ids_:first"
check "car_ids_:last"
end
私はいつも得る
Capybara::ElementNotFound:
cannot check field, no checkbox with id, name, or label 'car_ids_:first' found
これがどのように機能するか教えていただけますか?2 番目と 3 番目の要素を選択したいですか?
アップデート:
find(:css, "#car_ids_[value='#{@car1.id}']").set(true)
=> find(:css, "#car_ids_[value='#{@car1.id}']").checked?
==> "checked"
find(:css, "#car_ids_[value='#{@car2.id}']").set(nil)
=> find(:css, "#car_ids_[value='#{@car1.id}']").checked?
==> nil
find(:css, "#car_ids_[value='#{@car3.id}']").set(true)
=> find(:css, "#car_ids_[value='#{@car1.id}']").checked?
==> "checked"
select("Deactivate", :from => "car_action")
click_button "Submit"
page.body.should have_content "Updated cars!"
@user.cars[0].active?.should == true
@user.cars[1].active?.should == false
@user.cars[2].active?.should == true
しかし、最終的に、チェックボックスの値はコントローラーに渡されません! 理由はわかりません....チェックボックスがチェックされているように見えます(しかし、save_and_open_pageでページを開いた場合、それらもチェックされていませんか?)