【发布时间】:2015-05-01 12:21:45
【问题描述】:
我在让嵌套表单工作时遇到了一些问题。在下面的示例中,我有一个可以为帖子定义多个自定义标签的用户。用户应该能够为每个特定标签输入一个值。
所以一个帖子可以有多个标签,但每个标签只能有一个值!例如:帖子可以有一个名为“日期”的标签,也可以有一个名为“心情”的标签。两个标签应该只有一个值。
问题是当用户创建一个标签时——比如说“日期”——应该只能为这个特定标签的帖子输入一个值。因此,如果给定日期值,则表单不应再次为日期构建另一个字段。 (帖子已经有日期)
- 用户创建自定义标签(可行)
- 在帖子的编辑页面上,用户可以看到他在第 1 步中创建的标签(有效)
- 用户可以为每个标签输入一个值(这是问题所在)
我有以下型号:
class User < ActiveRecord::Base
has_many :posts
has_many :labels
end
class Post < ActiveRecord::Base
has_many :label_values
belongs_to :user
accepts_nested_attributes_for :label_values, allow_destroy: true
end
class Label < ActiveRecord::Base
has_many :label_values
belongs_to :user
end
class LabelValue < ActiveRecord::Base
belongs_to :post
belongs_to :label
end
在我的控制器中
class PostsController < ApplicationController
def edit
@labels = current_user.labels.all
@post.label_values.build
end
end
我的表格:
= simple_form_for @post do |f|
=f.fields_for :label_values do |s|
=s.association :label, :include_blank => false
=s.input :value
= f.button :submit
像这样,每次用户为特定标签输入一个值时,下一次新的 label_value 再次构建,这不是我想要的。对于每个标签,用户应该能够输入一个值。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 activerecord nested-forms has-many