代码之家  ›  专栏  ›  技术社区  ›  Obromios

如何使字段的参数值与显示的名称不同

  •  0
  • Obromios  · 技术社区  · 5 年前

    我有一个收集电子邮件地址的表格。

      <%= 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 %>
    

      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 :email %>
    

    但这在控制器中不起作用,因为参数是params[:email]而不是params[:homemail]。

    我如何让这个测试工作?

    2 回复  |  直到 5 年前
        1
  •  1
  •   Thomas Walpole    5 年前

    fill_in name , id fill_in 'Email', ... 我假设您打算使用关联的标签文本选项。您遇到的问题是标签实际上与字段没有关联(如果查看HTML源代码,您将看到标签) for 属性与输入不匹配 属性)。修复方法是更改视图,以便将标签与字段正确关联

    <%= 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 应该正常工作

        2
  •  1
  •   eurodo061    5 年前

      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