Rails复杂形式,具有可变数量的管理员预定属性

时间:2014-07-07 10:07:40

标签: ruby-on-rails ruby

我遇到了解决这个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名称的标签,并在创建/更新时设置相应的值。

任何人都可以帮助我或将我重定向到有用的东西吗?

0 个答案:

没有答案