elixir - 指定嵌套 Phoenix 表单字段的顺序
问题描述
我正在设置一个带有嵌套字段的表单,如何指定字段的顺序,以便它们不会组合在一起。
我可以用它inputs_for
来显示嵌套字段,但是它会一次显示它们。我想以动态顺序显示它们。
例如:
<%= inputs_for f, :apples, fn fa -> %>
<%= label fa, :name %>
<%= text_input fa, :name %>
<%= error_tag fa, :name %>
<% end %>
<%= inputs_for f, :oranges, fn fo -> %>
<%= label fo, :name %>
<%= text_input fo, :name %>
<%= error_tag fo, :name %>
<% end %>
这将为每个嵌套关联将所有 apples 和 oranges 字段组合在一起。因此,对于 2 个苹果和 3 个橙子,它将显示:
-苹果
-苹果
-橙
-橙
-橙
我想要的是将它们显示为:
-苹果
-橙子
-苹果
-橙子
-橙子
解决方案
您可以访问 from 中的数据,它以表单变量的形式传递给form_for/4
. 因此,您可以创建一个采用这种形式的函数,对您的苹果和橙子进行排序和组合,然后将它们与您的排序一起呈现。
<%= form_for @settings, Routes.config_path(@conn, :save), fn f -> %>
<%= render_apples_and_oranges(f) %>
<% end %>
然后在你的视图文件中定义函数render_apples_and_oranges\1
def apples_and_oranges(%{data: %{apples: apples, oranges: oranges}} = form) do
# Sort and combine apples and oranges
render("apples_oranges_field_template.html", form: form, apples_and_oranges: sorted_apples_and_oranges)
end
然后创建用于渲染苹果和橙子的新模板:
<%= for field <- @fields do %>
<%= text_input(@form, field.name, value: field.value %>
<% end %>
推荐阅读
- r - stat_fit_glance 和广义加性模型 (GAM) 错误
- r - 在闪亮的应用程序中使用会话参数
- linux - 如何在 bash/ksh shell 中使用 find 遍历文件
- python - 我已经安装了 python-dotenv 但 python 找不到它
- python-3.x - 理解为什么我们需要 Wheel Python 包而不是仅仅使用 sdist
- java - 如何在主要活动中使用应用程序更新管理器
- python - python - 如何从包含数字和单词的原始列表中创建一个仅包含数字和单词/短语的新列表?
- python - numpy.unique 有 freezesets 的问题
- xcode - 如何解决“开发人员工具访问需要控制另一个进程才能继续进行调试。” 在 Xcode 中?
- python - azure vm 上的 Python 套接字服务器