下面是我的表单,您可以看到将有许多行的输入字段都具有相同的类:
<%= q.simple_fields_for :choices do |c|%>
<div class="row-fluid choice-row">
<%= c.text_field :sort_order, class: 'span1' %>
<%= c.text_field :title, class: 'span9' %>
<%= c.link_to_remove 'Remove', class: 'btn btn-danger span2 pull-right' %>
</div>
<% end %>
对于我的测试我尝试:
fill_in(:sort_order, with: '3')
fill_in(:title, with: 'Choice 3')
我也尝试过:
fill_in('Sort Order', with: '3')
fill_in('Title', with: 'Choice 3')
和
fill_in('Sort Order', :with => '3')
fill_in('Title', :with => 'Choice 3')
我得到的错误是:
Failure/Error: fill_in(:title, with: 'Choice 3')
Capybara::ElementNotFound:
cannot fill in, no text field, text area or password field with id, name, or label 'title' found
有人可以推荐我如何填写特定输入,比如第三行吗?
答案 0 :(得分:0)
你会在你的标记中找到一个表单助手输出的字段在传递给fields_for
的对象中被命名空间,这确实是使用fields_for
的整点
在这种情况下,您的表单元素的名称将为choices[title]
和choices[sort_order]
。
要在按名称选择时找到并fill_in
正确的字段会产生许多字段,您需要获得更多创意,因为这不是一个非常典型的设置:
within
选择唯一的父元素nth
元素[2]
来访问第3个元素