如何拥有一个与显示名称具有不同参数值的字段
How to have a field that has a different params value to the displayed name
我有一个收集电子邮件地址的表格。
<%= form_tag accounts_path, :method => :post do %>
<div class="field">
<%= label_tag :email %><br />
<%= text_field_tag :homeEmail %>
</div>
<div class="Section-button">
<div class="actions">
<%= submit_tag "Update", class: 'btn btn-primary' %>
</div>
</div>
<% end %>
我将电子邮件的字段标记设置为 :homeEmail,因为我想使用 params[:homeEmail] 在控制器中恢复它。
我想使用水豚功能规格测试,例如
fill_in 'Email', with: user.email, match: :first
click_button Update
但我收到错误消息:
Unable to find visible field "Email" that is not disabled within #<Capybara::Node::Element
该元素未被禁用,当我在开发模式下尝试该页面时它可以正常工作。如果我只是将 text_field_tag 更改为
,测试将填写该字段
<%= text_field_tag :email %>
但这在控制器中不起作用,因为参数是 params[:email] 而不是 params[:homeEmail]。
我如何让这个测试工作?
而不是做:
fill_in 'Email', with: user.email, match: :first
你应该这样做:
fill_in 'homeEmail', with: user.email, match: :first
由于水豚尝试查找具有 id 或 name 属性的元素,如果您正在执行 <%= text_field_tag :homeEmail %>
它将生成 <input type="text" name="homeEmail" id="homeEmail">
但是在填充它时您使用 Email
作为水豚找不到任何元素的选择器。
如果有帮助请告诉我!
fill_in
查找要由 name
、id
或相关标签文本填充的元素。当您执行 fill_in 'Email', ...
时,我假设您打算使用关联的标签文本选项。您遇到的问题是标签实际上并未与该字段相关联(如果您查看 HTML 来源,您会看到标签 for
属性与输入 id
属性)。解决方法是更改您的视图以将标签与字段正确关联
<%= form_tag accounts_path, :method => :post do %>
<div class="field">
<%= label_tag :homeEmail, 'Email' %><br />
<%= text_field_tag :homeEmail %>
</div>
...
那么您的 fill_in 'Email', with: user.email
应该可以正常工作
我有一个收集电子邮件地址的表格。
<%= form_tag accounts_path, :method => :post do %>
<div class="field">
<%= label_tag :email %><br />
<%= text_field_tag :homeEmail %>
</div>
<div class="Section-button">
<div class="actions">
<%= submit_tag "Update", class: 'btn btn-primary' %>
</div>
</div>
<% end %>
我将电子邮件的字段标记设置为 :homeEmail,因为我想使用 params[:homeEmail] 在控制器中恢复它。
我想使用水豚功能规格测试,例如
fill_in 'Email', with: user.email, match: :first
click_button Update
但我收到错误消息:
Unable to find visible field "Email" that is not disabled within #<Capybara::Node::Element
该元素未被禁用,当我在开发模式下尝试该页面时它可以正常工作。如果我只是将 text_field_tag 更改为
,测试将填写该字段<%= text_field_tag :email %>
但这在控制器中不起作用,因为参数是 params[:email] 而不是 params[:homeEmail]。
我如何让这个测试工作?
而不是做:
fill_in 'Email', with: user.email, match: :first
你应该这样做:
fill_in 'homeEmail', with: user.email, match: :first
由于水豚尝试查找具有 id 或 name 属性的元素,如果您正在执行 <%= text_field_tag :homeEmail %>
它将生成 <input type="text" name="homeEmail" id="homeEmail">
但是在填充它时您使用 Email
作为水豚找不到任何元素的选择器。
如果有帮助请告诉我!
fill_in
查找要由 name
、id
或相关标签文本填充的元素。当您执行 fill_in 'Email', ...
时,我假设您打算使用关联的标签文本选项。您遇到的问题是标签实际上并未与该字段相关联(如果您查看 HTML 来源,您会看到标签 for
属性与输入 id
属性)。解决方法是更改您的视图以将标签与字段正确关联
<%= form_tag accounts_path, :method => :post do %>
<div class="field">
<%= label_tag :homeEmail, 'Email' %><br />
<%= text_field_tag :homeEmail %>
</div>
...
那么您的 fill_in 'Email', with: user.email
应该可以正常工作