我需要将当前日期传递给HTML中的表单,然后控制器将使用该信息。
<%= form_for @changeset, statistic_path(@conn, :create), fn f -> %>
<%= hidden_input f, :date_from, value: @time_insert.year, class: "form-control" %>
<%= hidden_input f, :date_to, class: "form-control" %>
<%= submit "today", class: "btn btn-primary" %>
<% end %>
这里我有@time_insert,它是:
time = Ecto.DateTime.cast!(:calendar.local_time())
time_insert = Ecto.DateTime.cast!({{time.year, time.month, time.day}, {time.hour, time.min, time.sec, time.usec}})
和表格的控制器:
def create(conn, %{"statistic" => %{"date_from" => %{"day" => day_from, "month" => month_from, "year" => year_from}, "date_to" => %{"day" => day_to, "month" => month_to, "year" => year_to}}}) do
date_from = Ecto.DateTime.cast!({{year_from, month_from, day_from}, {0, 0, 0, 0}})
date_to = Ecto.DateTime.cast!({{year_to, month_to, day_to}, {23, 59, 59, 0}})
我正在努力使用语法/方法将当前日期从@time_insert推送到要在控制器中使用的表单中。感谢任何建议。我已经检查了Phoenix.Html.Form,但仍无法使其正常工作:(
PS:我在控制器中制作地图,因为我使用以下变量:date_from,date_to进行进一步查询。
答案 0 :(得分:0)
正如您在评论中提到的,如果您想在表单中设置“今天”选项,您仍然不必设置日期,尤其是在客户端。
您可以这样做的一种方法是设置一个标志并在控制器中查找它。如果它存在,请按今天的日期过滤搜索。否则,回退到提供的范围或不过滤。
在伪代码中:
def create(conn, %{ "foo_params" => foo_params } do
case date_range = Map.get(foo_params, "today")
{:ok, _today} ->
# filter by today
_ ->
# handle other scenarios
end
end