2012-07-31 3 views
1

내가 같이 코딩에 이메일을 보낼 수있는 사용자의 목록을 짓고 있어요 (HAML를, 그 시점이 아니다하지만)레일 : 카피 바라, 체크 박스와 IDS

- @users.each do |user| 
    .field< 
     = check_box_tag "user_ids[#{user.id}]",user.id 
     %nbsp 
     = user.name 

코드는 잘 작동합니다 (그러나 아마도 리팩토링 될 수 있습니다.) 그러나 시간이 지남에 따라 객체 ID가 변경되므로 Capybara 테스트를 작성하는 데 문제가 있습니다. 사용자 ID이기 때문에 필드, ID, 이름, 또는 라벨 'user_ids_152'와 전혀 확인란을 확인할 수 없습니다

을 발견

..... 
Given user "User one" exists 
And "User two" esists 
...... 
When I check "user_ids_152" 
And I check "user_ids_153" 
..... 

내가 카피 바라 :: ElementNotFound 얻을 : 예를 들어, 나는 다음 오이 검사를 지금은 272입니다. 저는 여기서 검색하여 적절한 해결책을 찾지 못했습니다.

제안 사항?

답변

1

나는 당신의 요구 사항을 잘 모르겠지만, 당신의 체크 박스에 대한 HTML 라벨을 추가하면 쉽게 지속적으로 카피 바라를 통해 확인 할 것 : 그런 다음

%label{ :for => "user_ids_#{user.id}"} 
    = check_box_tag "user_ids[#{user.id}]",user.id, :id => "user_ids_#{user.id}" 
    = user.name 

당신이 할 수 있습니다 :

When I check "User one" 

필자는 잘 만들어진 표준 호환 HTML을 많이 쓸수록 장기적으로 카피 바라 (Capybara)와 같은 것을 쉽게 사용할 수 있다고 덧붙여 야합니다. 레일 뷰 헬퍼는 HTML 헬퍼를 사용하면 도움이되지만, 외부에서 생성하는 HTML은 메모 해 두십시오.

그위한 프라이머로 방탄 웹 디자인을 좋아한다 :

http://www.simplebits.com/publications/bulletproof/

+0

네, 잘 작동! 나는 (부트 스트랩) 양식 스타일을 "form-horizontal"으로 수정해야했다. 그렇지 않으면 한 줄에 체크 박스가 있고 다른 한 줄에 체크 상자가 있었을 것이다. – piffy