我有一个模型要填充一个表单,其中包含标题和正文。(可选)我希望能够提交链接以及该模型的一部分。如果填写,则提交,否则忽略。例如,该表单将在页面顶部具有标题和正文字段。
<%= form_for(@micropost, remote: true) do |f| %>
<div class="field">
<%= f.text_field :title %>
<%= f.text_area :content %>
</div>
<%= f.submit "Post" %>
<% end %>
现在,我想为链接添加字段,但是要在页面上的其他位置(以表明它是可选的)。
<%= f.text_field :link %>
我试图一次全部完成
<%= form_for(@micropost, remote: true) do |f| %>
<div class="field">
<%= f.text_field :title %>
<%= f.text_area :content %>
<! insert other content here >
<%= f.text_field :link %>
</div>
<%= f.submit "Post" %>
<% end %>
但这会导致部分的嵌套非常混乱,我不确定如何使其正确工作。另外,我想知道是否有可能在页面顶部有一个form_for,而在页面底部有另一个以某种方式“同步”的form_for,因此通过按顶部的Submit按钮,输入的值底部的form_for也被收集并提交。
<%= form_for(@micropost, remote: true) do |f| %>
<div class="field">
<%= f.text_field :title %>
<%= f.text_area :content %>
</div>
<%= f.submit "Post" %>
<% end %>
<%= form_for(@micropost, remote: true) do |f| %>
<! somehow sync this with the other form >
<%= f.text_field :link %>
<% end %>
我在这里发现规范的做法是使用“ form”属性。给表单提供一个ID,即使该字段位于表单外部,该字段也可以从该ID返回该表单。例如,
<%= form_for(@micropost, remote: true, html: { id: "micropost_form" }) do |f| %>
<div class="field">
<%= f.text_field :title %>
<%= f.text_area :content %>
</div>
<%= f.submit "Post" %>
<% end %>
然后,我们可以使用fields_for将所需的字段放置在其他位置,并链接回原始表单。
<%= fields_for @micropost do |f| %>
<%= f.text_field :link, form:"micropost_form" %>
<% end %>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句