Skip to content

Commit 671042c

Browse files
allow datetime as form option values (#468)
1 parent 0f31c95 commit 671042c

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

lib/phoenix_html/form.ex

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,8 @@ defmodule Phoenix.HTML.Form do
391391
end
392392

393393
defp option(group_label, group_values, extra, value)
394-
when is_list(group_values) or is_map(group_values) do
394+
when is_list(group_values) or
395+
(is_map(group_values) and not is_map_key(group_values, :__struct__)) do
395396
section_options = escaped_options_for_select(group_values, value, extra)
396397
option_tag("optgroup", [label: group_label], {:safe, section_options})
397398
end

test/phoenix_html/form_test.exs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -293,6 +293,19 @@ defmodule Phoenix.HTML.FormTest do
293293
~s(<option value="value">Label</option>) <>
294294
~s(<hr/>) <>
295295
~s(<option value="new">New</option>)
296+
297+
assert options_for_select(
298+
[
299+
{"Open", ~U[2025-01-01 06:30:00.000000Z]},
300+
{"Close", ~U[2025-01-01 18:30:00.000000Z]}
301+
],
302+
[
303+
~U[2025-01-01 06:30:00.000000Z]
304+
]
305+
)
306+
|> safe_to_string() ==
307+
~s(<option selected value="2025-01-01T06:30:00.000000Z">Open</option>) <>
308+
~s(<option value="2025-01-01T18:30:00.000000Z">Close</option>)
296309
end
297310

298311
test "with custom option tag" do

0 commit comments

Comments
 (0)