【问题标题】:function Map.put/4 is undefined or private函数 Map.put/4 未定义或私有
【发布时间】:2022-01-14 12:14:27
【问题描述】:

我刚开始学丹药和凤凰。

我正在尝试将 cmets 添加到博客,但出现此错误

function Map.put/4 is undefined or private

错误在这一行(show.html.heex):

<%= render "comment_form.html", Map.put(assigns, :changeset, :action, Routes.post_post_path(@conn, :add_comment, @post)) %>

我在 post_controller.ex 中的代码

  def show(conn, %{"id" => id}) do
      post =
          id
            |> Posts.get_post!
            |> Repo.preload([:comments])

      changeset = Comment.changeset(%Comment{}, %{})
      render(conn, "show.html", post: post, changeset: changeset)
  end

还有comment_form.html.heex

<%= form_for @changeset, @action, fn f -> %>
    <div class="form-group">
        <label>Name</label>
        <%= text_input f, :name, class: "form-control" %>
    </div>
    <div class="form-group">
        <label>Content</label>
        <%= textarea f, :content, class: "form-control" %>
    </div>
    <div class="form-group">
        <%= submit "Add comment", class: "btn btn-primary" %>
    </div>
<% end %>

【问题讨论】:

    标签: web elixir backend phoenix-framework


    【解决方案1】:

    您可能不小心在代码中添加了:changeset

    - Map.put(assigns, :changeset, :action, Routes.post_post_path(@conn, :add_comment, @post))
    + Map.put(assigns, :action, Routes.post_post_path(@conn, :add_comment, @post))
    

    Map.put/3 可以将新的键值对放入现有映射中。这里3 表示arity(参数的数量)为3。

    在您的情况下,将 :changeset 的新分配放入已经包含该键的继承分配中几乎没有意义。

    【讨论】:

      猜你喜欢
      • 2019-04-12
      • 2017-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多