我遇到了解决这个Ruby on Rails问题的麻烦(我对此很新)。
场景(Ruby on Rails 4 with Devise and other gems):
我有属于单个用户的Exposers列表。
每个Exposer都有一些db中具有固定列的属性(name,description,ecc)。
网站管理员可以为单个用户的所有Exposers添加一些属性(exposer_special_field),这些属性将在Exposer的表单中显示(更新和创建)。这些字段现在只包含一个名称属性(可翻译),但我打算添加一些更多信息,如数据类型(整数或字符串)或类似信息。
每个Exposer都会为每个动态属性赋值(exposer_special_value)。
每个用户都有一个具有不同自定义字段的曝光器列表,这就是我需要它为动态的原因(否则我会尝试在管理员为所有曝光器添加新属性时向db添加动态列)。
这些是我的(简化)模型
exposer.rb
class Exposer < ActiveRecord::Base
belongs_to :user
has_many :exposer_special_values
has_many :exposer_special_fields, through: :user
accepts_nested_attributes_for :exposer_special_values,
:allow_destroy => true
exposer_special_field.rb
class ExposerSpecialField < ActiveRecord::Base
belongs_to :fair
has_many :exposer_special_values
#the property is: name:string
end
exposer_special_value.rb
class ExposerSpecialValue < ActiveRecord::Base
belongs_to :exposer_special_field
belongs_to :exposer
#the property is : value:string
end
老实说,我不知道如何在曝光器/ _form.html.erb中使用 我已经尝试过(在form_for中)这个
<% f.fields_for :exposer_special_values, @exposer.exposer_special_values do |ff| %>
<div class="control-group">
<%= ff.label ff.object.exposer_special_field.name, :class => 'control-label' %>
<div class="controls">
<%= ff.text_field :value, :class => 'text_field' %>
</div>
</div>
<% end %>
正如您所看到的,我的目标是在其中添加一个带有special_field名称的标签,并在创建/更新时设置相应的值。
任何人都可以帮助我或将我重定向到有用的东西吗?