【发布时间】:2020-05-20 22:44:21
【问题描述】:
我想写一个简单的表单并提交到后端。这是我的表格:
<form action="/users" method="post">
<input name="_method" type="hidden" value="put">
<input name="_csrf_token" type="hidden" value="xxx">
<label for="user_name">Name</label>
<input id="user_1_name" name="user[][name]" type="text" value="Stephen">
<label for="user_age">Age</label>
<input id="user_1_age" name="user[][age]" type="number" value="30">
<label for="user_name">Name</label>
<input id="user_2_name" name="user[][name]" type="text" value="Leo">
<label for="user_age">Age</label>
<input id="user_2_age" name="user[][age]" type="number" value="15">
<div>
<button type="submit">Save</button>
</div>
</form>
提交到后端时,我收到的参数是:
Parameters: %{"_csrf_token" => "xxx", "_method" => "put", "user" => [%{"name" => "Stephen"}, %{"age" => "30"}, %{"name" => "Leo"}, %{"age" => "15"}]}
但我希望参数是(每个用户一张地图):
Parameters: %{"_csrf_token" => "xxx", "_method" => "put", "user" => [%{"name" => "Stephen", "age" => "30"}, %{"name" => "Leo", "age" => "15"}]}
有可能吗?
【问题讨论】:
-
为什么用 Ruby on Rails 和 Phoenix 框架来标记它?它是哪一个?通常,在 Rails / Rack 上,您会将输入命名为
user[0][name]、user[0][age]、user[1][name]。如果您需要示例,请查看 fields_for 的工作原理。 -
@max 我正在研究 phoenix 框架,纯 html 形式对理解逻辑更有意义。得到答复后,我将转移到 phoenix/rails 方式。更何况,上面的后端日志来自phoenix/rails
-
我不会假设 phoenix 和 rack 实际上以相同的方式处理表单数据。他们可能会,但这似乎是一个糟糕的假设。
标签: html ruby-on-rails forms phoenix-framework