2
我想填充一個字段:參數(從模型/架構)這是一個地圖。我有一個工作form_for,我想填充:params地圖通過複選框,以便當提交表單時,控制器將收到類似於%{... params => %{"param1" => "true", "param2" => "false"}} ...
鳳凰框架 - 如何通過form_for填充地圖字段?
我已經看了inputs_for,但沒有似乎做我所需要的,因爲它依賴於嵌套的架構和模型,這意味着我需要爲每個新的參數集創建一個新的模式(我需要一些通用的,如果參數不需要更改源代碼更改)。
<%= form_for @changeset, audit_audit_path(@conn, :new_tool_request, @audit.id),
fn f -> %>
<%= render LayoutView, "changeset_error.html", conn: @conn, changeset: @changeset, f: f %>
<div class="form-group"><label>Tool</label>
<%= select f, :toolname, tools %>
</div>
<div class="form-group"><label>Parameter 1</label>
<%= checkbox f, :param1 %>
</div>
<div class="form-group"><label>Parameter 2</label>
<%= checkbox f, :param2 %>
</div>
<div class="form-group"><label>Date of Execution</label>
<%= datetime_select f, :date %>
</div>
<div class="form-group">
<%= hidden_input f, :audit_id, value: @audit.id %>
</div>
<%= submit "Request", class: "btn btn-primary" %>
<% end %>
因此,而不是具有param1
和param2
這些複選框,我需要獲得所有這些參數代入地圖。如果使用不同的複選框爲參數呈現另一個表單,則它必須填充而與模式沒有任何關係。
謝謝!
如果我的問題得到了解決,我認爲您只需要爲它們生成一個名稱空間爲「params」的名稱屬性,例如'<%= checkbox f,:param1,name:「params [param1]」 %>'和'<%= checkbox f,:param2,name:「params [param2]」%>'但我相信form_for應該自動完成。 – JustMichael
這不完全是我想要的,但它的工作原理!謝謝。僅供參考,如果您按照@JustMichael的建議進行操作,則會提交另一個表單/映射,在本例中爲名稱「params」。在你的控制器中,只需定義一個接收params的函數,例如'def action_to_use(conn,「form」=> form,「params」=> params'),你將得到你用命名空間創建的第二個表單。 –