gpt4 book ai didi

ruby-on-rails - Rails 嵌套属性数组

转载 作者:行者123 更新时间:2023-12-04 19:55:44 24 4
gpt4 key购买 nike

我在使用嵌套属性创建多个模型对象时遇到问题。我有 .erb 表格:

<%= f.fields_for :comments do |c| %>
<%= c.text_field :text %>
<% end %>

正在生成如下所示的输入字段:
<input type="text" name="ad[comments_attributes][0][text]" />
<input type="text" name="ad[comments_attributes][1][text]" />
<input type="text" name="ad[comments_attributes][2][text]" />

当我真正想要的是它看起来像这样:
<input type="text" name="ad[comments_attributes][][text]" />
<input type="text" name="ad[comments_attributes][][text]" />
<input type="text" name="ad[comments_attributes][][text]" />

使用表单助手,如何让表单创建一个散列数组,就像我在第二个例子中那样,而不是像第一个例子那样创建一个散列?

最佳答案

您可以将 text_field_tag 用于此特定类型要求。
这个 FormTagHelper 提供了许多创建表单标签的方法,这些标签不像 FormHelper 那样依赖于分配给模板的 Active Record 对象。相反,您需要手动提供名称和值。

如果您给它们都赋予相同的名称并在末尾附加 [],如下所示:

 <%= text_field_tag "ad[comments_attributes][][text]" %>
<%= text_field_tag "ad[comments_attributes][][text]" %>
<%= text_field_tag "ad[comments_attributes][][text]" %>

您可以从 Controller 访问这些:

comments_attributes = params[:ad][:comments_attributes] # this is an array



上面的 field_tag html 输出如下所示:
<input type="text" name="ad[comments_attributes][][text]" />
<input type="text" name="ad[comments_attributes][][text]" />
<input type="text" name="ad[comments_attributes][][text]" />

如果您在方括号之间输入值,rails 会将其视为散列:
 <%= text_field_tag "ad[comments_attributes][1][text]" %>
<%= text_field_tag "ad[comments_attributes][2][text]" %>
<%= text_field_tag "ad[comments_attributes][3][text]" %>

将被 Controller 解释为带有键“1”、“2”和“3”的散列。
我希望我正确理解你需要什么。

谢谢

关于ruby-on-rails - Rails 嵌套属性数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16968509/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com