我有一個帶有選擇標籤(下拉表單域)的相對簡單的表單。如何使用Phoenix Framework中的獨立模型創建帶選項和值的選擇標籤
選擇標記的選項/值是動態的,應在更新我的類別模型時更新。
這就是我現在得到:
的形式通過web/templates/posts/new.html.eex
模板像這樣渲染:
<%= render "form.html", changeset: @changeset,
action: project_path(@conn, :create) %>
以下是有關窗體域web/templates/posts/form.html.eex
<div class="form-group">
<%= select f, :category, MyApp.Category, class: "form-control" %>
<%= error_tag f, :category %>
</div>
但我會出現以下錯誤:
protocol Enumerable not implemented for MyApp.Category
如何將我的分類存儲庫用作表單中的選擇標籤選項?
編輯:我已經提取了我的PostController的新行動中的類別由Gazler(謝謝Gaz)建議。
def new
categories = Repo.all(MyApp.Category)
changeset =
user
|> build_assoc(:projects)
|> Project.changeset()
render(conn, "new.html", changeset: changeset)
end
和更新我的模板:
<div class="form-group">
<%= select f, :category, @categories, class: "form-control" %>
<%= error_tag f, :category %>
</div>
,現在我發現了以下錯誤:
assign @categories not available in eex template.
編輯:看起來也許我應該使用multiple_select/4
爲Aaron did here,因爲我希望選項顯示類別標題和值作爲類別ID。
答:
結束了使用從Gazler發佈的鏈接這一行(在我post_controller的新動作):
categories = Repo.all(Qlc.Category) |> Enum.map(&{&1.title, &1.id})
這給了我這個錯誤:'assign @categories not available in eex template'。 –
@AndrewHendrie您能否發佈您的模板?編輯爲 – Gazler
以包含模板 - 與您發佈的相同。請參閱有關post_controller的新操作的編輯。 –