gpt4 book ai didi

ruby-on-rails-3 - 分组和 fields_for

转载 作者:行者123 更新时间:2023-12-03 16:00:01 25 4
gpt4 key购买 nike

我正在尝试创建一个表单,该表单允许我为关联输入分组的关联提交新记录。

   class Product < AR::Base
has_many :properties
accepts_nested_attributes_for :properties
end

请注意,在 Controller 中为产品构建了一系列属性,因此 @product.properties.empty? # => false .

以下 fields_for给我正确的输入名称,例如 product[properties_attributes][0][value] .
= form.fields_for :properties do |pform|                                                                                                                               
= pform.input :value

但是,一旦我尝试对关联进行分组,它就不再生成具有正确名称的输入:
- @product.properties.group_by(&:group_name).each do |group_name, properties|
%h3= group_name
= form.fields_for properties do |pform|
= pform.input :value

这将创建输入 name属性如 product[product_property][value]实际上应该是 product[property_attributes][0][value]按照第一个例子。

Rails 文档建议您可以这样做:
= form.fields_for :properties_attributes, properties do |pform|

但这给出了一个错误“数组的未定义方法值”。

最佳答案

你需要这样设置:

- @product.properties.group_by(&:group_name).each do |group_name, properties|
%h3= group_name
= form.fields_for :properties, properties do |pform|
= pform.text_field :value

它应该可以正常工作,因为您有 accepts_nested_attributes_for :properties rails 知道它应该为 properties_attributes 创建字段.此外,您可能想要添加 attr_accessible :properties_attributes如果您使用的是最新的 Rails 之一,并且尚未将其添加到模型中;)

此外,如果您想根据单一属性(property)做出某些决定,您也可以使用以下表格:
- @product.properties.group_by(&:group_name).each do |group_name, properties|
%h3= group_name
- properties.each do |property|
= form.fields_for :properties, property do |pform|
= pform.text_field :value

它们都在这里得到了很好的描述: http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-fields_forOne-To-Many部分

关于ruby-on-rails-3 - 分组和 fields_for,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11902248/

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