Возможно ли создать форму с определенным форматом в бэкэнде? - PullRequest
0 голосов
/ 05 февраля 2020

Я хочу написать простую форму и отправить в бэкэнд. Вот моя форма:

<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"}]}

Возможно ли это?

1 Ответ

0 голосов
/ 13 марта 2020

Феникс. HTML .Form.input_for / 4 - это то, что вам нужно для

<%= form_for @changeset, @action, fn f -> %>

 <%= hidden_input f, :_csrf_token, value: "xxx" %>
 <%= hidden_input f, :_method, value: "put" %>

 <%= inputs_for f, :user, fn cf -> %>
   <%= label cf, :name %>
   <%= text_input cf, :name %>
   <%= error_tag cf, :name %>

   <%= label cf, :age %>
   <%= text_input cf, :age %>
   <%= error_tag cf, :age %>
 <% end %>

 <%= inputs_for f, :user, fn cf -> %>
   <%= label cf, :name %>
   <%= text_input cf, :name %>
   <%= error_tag cf, :name %>

   <%= label cf, :age %>
   <%= text_input cf, :age %>
   <%= error_tag cf, :age %>
 <% end %>

 <div><%= submit "Save" %></div>
<% end %>
...