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'),你将得到你用命名空间创建的第二个表单。 –