水豚找不到 simple_form 字段与集合

capybara cant find simple_form field with collection

我有 simple_form 个带字段的表单

<%= simple_form_for(@menu) do |f| %>
  <%= f.error_notification %>

  <div class="form-inputs">enter code here
    <%= f.input :order_date, :input_html => { :value => Time.now.strftime("%A") } %>
    <%= f.input :title %>
    <%= f.input :dish_category, input_html: {id: "dish_category"}, as: :radio_buttons,  collection: ["First course", "Main course", "Drink"] %>
    <%= f.input :description %>
    <%= f.input :price %>
  </div>

  <div class="form-actions">
    <%= f.button :submit %>
  </div>
<% end %>

而且效果很好。但是当我用水豚测试它时,它给了我一个错误: 失败:

  1) Lunches Admin create menu lunches admin can create new menu only for today
     Failure/Error: fill_in 'Dish category', :with => 'First course'

     Capybara::ElementNotFound:
       Unable to find field "Dish category"

自测:

  scenario "lunches admin can create new menu only for today" do
    admin = FactoryGirl.create(:lunches_admin)
    login_as(admin)
    visit new_menu_path
    fill_in "Order date",    :with => Time.now.strftime("%A")
    fill_in "Title",         :with => "Borsh"
    fill_in "Description",   :with => "Mmm, yamy"    
    fill_in "Price",         :with => 99.99 
    fill_in 'Dish category', :wit`enter code here`h => 'First course'
    click_button 'Create Menu'
    expect(page).to have_content "Menu was successfully created."
  end

HTML本身:(我还得再写点东西,因为程序说代码太多,字数不够)

<form novalidate="novalidate" class="simple_form new_menu" id="new_menu" action="/menus" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="&#x2713;" /><input type="hidden" name="authenticity_token" value="Dgh1T4kP0h/bqnXo6blYSu8lBPLwbM/3XD8sKVijc61YTYPmjVlwdHFfPZuaqwARambyChdOVstRQuO6WmgPbQ==" />


  <div class="form-inputs">
    <div class="form-group string optional menu_order_date"><label class="string optional control-label" for="menu_order_date">Order date</label><input value="Friday" class="string optional form-control" type="text" name="menu[order_date]" id="menu_order_date" /></div>
    <div class="form-group string required menu_title"><label class="string required control-label" for="menu_title"><abbr title="required">*</abbr> Title</label><input class="string required form-control" type="text" name="menu[title]" id="menu_title" /></div>
    <div class="form-group radio_buttons required menu_dish_category"><label class="radio_buttons required control-label" for="dish_category"><abbr title="required">*</abbr> Dish category</label><span class="radio"><label for="menu_dish_category_first_course"><input id="dish_category" class="radio_buttons required" type="radio" value="First course" name="menu[dish_category]" />First course</label></span><span class="radio"><label for="menu_dish_category_main_course"><input id="dish_category" class="radio_buttons required" type="radio" value="Main course" name="menu[dish_category]" />Main course</label></span><span class="radio"><label for="menu_dish_category_drink"><input id="dish_category" class="radio_buttons required" type="radio" value="Drink" name="menu[dish_category]" />Drink</label></span></div>
    <div class="form-group text required menu_description"><label class="text required control-label" for="menu_description"><abbr title="required">*</abbr> Description</label><textarea class="text required form-control" name="menu[description]" id="menu_description">
</textarea></div>
    <div class="form-group decimal required menu_price"><label class="decimal required control-label" for="menu_price"><abbr title="required">*</abbr> Price</label><input class="numeric decimal required form-control" type="number" step="any" name="menu[price]" id="menu_price" /></div>
  </div>

  <div class="form-actions">
    <input type="submit" name="commit" value="Create Menu" class="btn btn-default" />
  </div>
</form>

由于 dish_category 是一个单选按钮,您需要使用另一个水豚选择器才能与之交互。 变化

fill_in 'Dish category', :with => 'First course'

至:

choose('First course')

这应该可以解决问题。

您可以在此处阅读有关表单的水豚选择器的更多信息:https://github.com/jnicklas/capybara#interacting-with-forms