I have this below form
<%= form_for @conn, Routes.admin_user_path(@conn, :create), [as: :create_user, id: "user-form",
class: "mt-5 mb-5 login-input", method: :post], fn f -> %>
<div class="form-group">
<%= text_input f, :name, placeholder: "Name", class: "form-control" %>
</div>
<div class="form-group">
<%= text_input f, :email, placeholder: "Email", class: "form-control" %>
</div>
<div class="form-group">
<%= text_input f, :password, placeholder: "Password", class: "form-control" %>
</div>
<h4 class="card-title">Select Allowed Permission Groups</h4>
<div class="form-group mx-sm-3 mb-2">
<%= label f, "Custom fields" %>
<div class="checkbox">
<label><input type="checkbox" name="fields[]"
value="1" /> admin</label>
</div>
<div class="checkbox">
<label><input type="checkbox" name="fields[]"
value="2" />admin 2</label>
</div>
</div>
<br/>
<input type="submit" value="Save" class="btn btn-dark mb-2" />
<%= end %>
In my controller
def create(conn, %{"create_user" => user_params}) do
IO.inspect user_params
case Admins.create_user(user_params) do
{:ok, user} ->
conn
|> put_flash(:info, "User created successfully.")
|> redirect(to: Routes.admin_user_path(conn, :show, user))
{:error, %Ecto.Changeset{} = changeset} ->
render(conn, "new.html", changeset: changeset)
end
end
I am printing the user_params to check what are the fields are coming. Below is what i am getting
%{“email” => “test@test.com”, “name” => “test”, “password” => “12345678”}
My checkbox fields[] params are missing
But in my terminal, I am seeing that fields param.
[info] POST /admin/user/add
[debug] Processing with LogisticsWeb.Admin.UserController.create/2
Parameters: %{"_csrf_token" => "Ai8DNX57AloiHl19bzVcFCxGbxNSWCJFsxpj1IH2dGdNBE8lY79B90Rq", "_utf8" => "âś“", "create_user" => %{"email" => "", "name" => "", "password" => "[FILTERED]"}, "fields" => ["1", "2"]}
Pipelines: [:browser, :admin, LogisticsWeb.Plugs.AuthenticateAdmin]
Like it is coming like this
%{
"_csrf_token" => "QR44HR0FDRkxHnRLYhQXTjIYAWMdHR1/0IKBR7GqwGMxOds6GiW2vumK",
"_utf8" => "âś“",
"create_user" => %{"email" => "", "name" => "", "password" => ""},
"fields" => ["1", "2"]
}
why the fields param is not inside the create_user map?
Am I missing something?