加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 03:30:31 所属栏目:百科 来源:网络整理
导读:我正在尝试创建一个表单,允许我为关联输入分组的关联提交新记录. class Product AR::Base has_many :properties accepts_nested_attributes_for :properties end 请注意,在控制器中为产品构建了一系列属性,所以@ product.properties.empty? #=假. 下面的fie
我正在尝试创建一个表单,允许我为关联输入分组的关联提交新记录.

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

请注意,在控制器中为产品构建了一系列属性,所以@ product.properties.empty? #=>假.

下面的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]的输入,实际上它应该是产品[property_attributes] [0] [value],如第一个例子所示.

Rails文档建议您可以这样做:

= form.fields_for :properties_attributes,properties do |pform|

但这会给出错误“Array的未定义方法值”.

解决方法

你需要这样设置:

- @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:属性rails知道它应该为properties_attributes创建字段.此外,您可能想要添加
attr_accessible:properties_attributes如果你使用的是最新的Rails之一,如果你还没有将它添加到你的模型中;)

此外,如果您想根据单个属性做出一些决定,您也可以使用以下表单:

- @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_for

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读