让我们建议情况:EAV数据模型(通用)。存在实体表,属性表和值表。我为所有这些东西制作了脚手架。接下来,我们将转到Values-> New页面。它在值表中创建了新的值。我在这里有entity_id
和attribute_id
个字段。我想从Attributes表中添加动态字段。因此,在New操作的Values控制器中,我有:
def new
@value = Value.new
@attribute = Attribute.find(:all) #It is not correct, it will search ALL existing attributes for all entities, I'll fix it later
respond_to do |format|
format.html # new.html.erb
format.json { render json: @value }
end
end
接下来我们转到Views-> Values-> _form.html.erb和生成部分在这里:
<% @attribute.each do |attr| %>
<div class="field">
<%= f.label attr.name %><br />
<%= text_field_tag(controller.controller_name.singularize+'['+attr.name+']') %>
</div>
<% end %>
看一下这个字符串:<%= text_field_tag(controller.controller_name.singularize+'['+attr.name+']') %>
这有些不是“专业红宝石”风格。它看起来像马车,像垃圾一样。 (但它确实有效)。
最后,问题是:如何使它成为“专业红宝石风格”,也许它必须看起来像f.text_field attr.name
(它不起作用)。怎样成为? :)