如何在 <form> 中设置没有名称的名称:?

How to set name in <form> without name:?

我想创建一个 <form> 标签,如下所示:

<form accept-charset="UTF-8" action="/login" method="post" name="login_form">

正如http://hexdocs.pm/phoenix_html/Phoenix.HTML.Form.html中的在线文档所说,我在模板中调用form_for如:

<%= form_for @changeset, login_path(@conn, :index), [name: :login_form], fn form -> %>

但出现警告:the :name option in form_for/inputs_for is deprecated, please use :as instead

name:替换为as:被抑制,但name参数被省略。如何用as:或其他参数设置名称?

<%= form_for @changeset, login_path(@conn, :index), [as: :login_form], fn form -> %>`

我认为您应该使用两个密钥(:name:as)作为解决方法,直到弃用被删除。

name: tag 键设置 name="login_form" 属性 将表单字段设置为 login_form[field_name]。 在我看来,冲突是将 :name 更改为 :as 的原因。

代码

<%= form_for @changeset, @action, [name: "login_form"], fn f -> %>
    <%= text_input f, :user, class: "form-control" %>
<% end %>

结果

<form name="login_form" method="post">
    <input name="login_form[user]" type="text">
</form>

如果您同时设置 :as 标记,则覆盖 :name 中的字段对象定义。

代码

<%= form_for @changeset, @action, [name: "login_form", as: "account"], fn f -> %>
    <%= text_input f, :user, class: "form-control" %>
<% end %>

结果

<form name="login_form" method="post">
    <input name="account[user]" type="text">
</form>

希望对您有所帮助。