Forms EXTO:提供给输入_的关联值具有不同的顺序

Forms EXTO:提供给输入_的关联值具有不同的顺序,forms,phoenix-framework,ecto,Forms,Phoenix Framework,Ecto,我有两个模式,它们之间有很多关系。 职位: 并请注意: schema "blog_notes" do field :title, :string belongs_to :post, MyProject.Blog.Post, foreign_key: :blog_post_id timestamps() end 在编辑操作的PostController中,我加载带有相关注释的帖子: def edit(conn, %{"id" => id}) do

我有两个模式,它们之间有很多关系。 职位:

并请注意:

  schema "blog_notes" do
    field :title, :string
    belongs_to :post, MyProject.Blog.Post, foreign_key: :blog_post_id
    timestamps()
  end
在编辑操作的PostController中,我加载带有相关注释的帖子:

  def edit(conn, %{"id" => id}) do
    post = Repo.get!(Post, id) |> Repo.preload(:notes)
    IO.inspect post
    changeset = Blog.change_post(post)
    render(conn, "edit.html", post: post, changeset: changeset)
  end
表单模板如下所示:

<%= form_for @changeset, @action, fn f -> %>
  <%= if @changeset.action do %>
    <div class="alert alert-danger">
      <p>Oops, something went wrong! Please check the errors below.</p>
    </div>
  <% end %>

  <div class="form-group">
    <%= label f, :body, class: "control-label" %>
    <%= textarea f, :body, class: "form-control" %>
    <%= error_tag f, :body %>
  </div>

  <%= inputs_for f, :tags, fn fa -> %>
      <div class="form-group">
        <%= label fa, :title, class: "control-label" %>
        <%= text_input fa, :title, class: "form-control" %>
        <%= error_tag fa, :title %>
      </div>    
    <%= end %>
  <%= end %>

  <div class="form-group">
    <%= submit "Submit", class: "btn btn-primary" %>
  </div>
<% end %>
%>
哎呀,出问题了!请检查下面的错误

%>

问题是,当我打开添加了一些注释的post edit表单时,它会以不同于添加注释的顺序显示注释,似乎Ecto预加载了相关注释,而不考虑顺序。有没有简单的方法让EXTO按照添加顺序保存关联模型

您可以将查询传递到
Repo.preload
以执行此操作:

notes = from(n in MyProject.Blog.Note, order_by: n.inserted_at)
post = Repo.get!(Post, id) |> Repo.preload(notes: notes)

这将按插入的按升序加载
注释

谢谢,非常优雅。很高兴看到有办法在这种情况下继续使用预加载功能。
notes = from(n in MyProject.Blog.Note, order_by: n.inserted_at)
post = Repo.get!(Post, id) |> Repo.preload(notes: notes)