1

メールを送信するユーザーのリストを作成しています。これは次のようにコード化されています (haml、それは重要ではありません)

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

コードは正常に動作します (ただし、おそらくリファクタリングできます)。ただし、オブジェクト ID は時間の経過とともに変化するため、Capybara テストの記述に問題があります。たとえば、次のキュウリ テストがあります。

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

Capybara::ElementNotFound: cannot check field, no Checkbox with id, name, or label 'user_ids_152' found が表示されます

ユーザーIDは現在272であるため、SOで適切な解決策を検索しましたが見つかりませんでした。

提案?

4

1 に答える 1

1

あなたの要件はよくわかりませんが、チェックボックスに HTML ラベルを追加すると、Capybara 経由で一貫してチェックしやすくなります。

%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 のようなものを使いやすくなります。Rails ビュー ヘルパーは、使用する場合に役立ちますが、それら以外で生成している HTML に注意してください。

そのための入門書として、Bullet Proof Web Design が気に入っています。

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

于 2012-07-31T21:10:40.267 に答える