0

レール3

フォーム内にリストがあります:

<%= form_for @article do |f| %>
  <ul>
    <% @product.each do |p| %>
      <li id="product_<%=p.id%>">
        <div>
         <%= f.radio_button(:p_id, p.id, class: 'hidden') %>
        </div>
      </li>
    <% end %>
  </ul>
  <%= f.submit 'submit', :id=>"submit_category", :class=>'hide' %>
<% end %>

ユーザーがli要素をクリックすると、ラジオボタンが選択されてフォームが送信されるように、JavaScript関数を追加しました。

<script type="text/javascript">
  $('li').click(function() {
    $(this).find('input[type=radio]').attr('checked', true);
    $('#submit_category').click();
  });
</script>

これは本番環境、開発環境では完全に機能しますが、テスト環境では失敗します。フォームは送信されましたが、ラジオ ボタンが選択されていないため、検証エラーが発生します。

私のテストは Cucumber + Selenium + Capybara で行われます。テストライン:

When /^I click on the "(.*?)" product$/ do |product_name|
  @product = Product.find_by_name(product_name)
  page.find('li', id: "product_#{@p.id}").click
end
4

1 に答える 1

0

ここで推測していますが、コードを $(function () { ..your code }) (domready) コールバックでラップすることはできますか?

于 2012-09-20T01:13:12.097 に答える