I have this form
<%= form_for @conn, Routes.admin_products_path(@conn, :create_product), [as: :create_product, id: "product-form", class: "mt-5 mb-5 login-input", method: :post, multipart: :true], fn f -> %>
<div class="form-group">
<%= text_input f, :name, placeholder: "Name", class: "form-control" %>
</div>
<div class="form-group">
<%= text_input f, :description, placeholder: "Description", class: "form-control" %>
</div>
<h4 class="card-title">Image Upload</h4>
<div class="form-group">
<%= file_input f, :image_files, name: "create_product[images][]", multiple: true, class: "form-control", placeholder: "Upload Image" %>
</div>
<h4 class="card-title">Video Upload</h4>
<div class="form-group">
<%= file_input f, :video_files, name: "create_product[videos][]", multiple: true, class: "form-control", placeholder: "Upload Image" %>
</div>
<br/><br/>
<input type="submit" value="Save" class="btn btn-dark mb-2" />
<% end %>
I have this three function to filter and process through Guard
def create_product(conn, %{"create_product" => product_params}) when is_list(product_params["images"]) == true and is_list(product_params["videos"]) == true do
def create_product(conn, %{"create_product" => product_params}) when is_list(product_params["images"]) == true and is_list(product_params["videos"]) == false do
def create_product(conn, %{"create_product" => product_params}) when is_list(product_params["images"]) == false and is_list(product_params["videos"]) == true do
Below is my inspect output
%{
"description" => "sdfdf",
"images" => [
[
%Plug.Upload{
content_type: "image/jpeg",
filename: "deuteronomy-2223-eggstransvestite-transvestism-cross-dressing-cult-prostitutes-lost-and-found-35-638.jpg",
path: "/tmp/plug-1586/multipart-1586529347-447222130427589-1"
}
]
],
"name" => "Sony"
}
I can see this error is due to accessing product_params["images"]
.
Can anyone give me insight on how to solve this? Or is there any better way to filter this. Your help is greatly appreciated