0

让我们建议情况:EAV 数据模型(通用)。存在实体表、属性表和值表。我已经为所有这些东西做了脚手架。接下来,我们将进入 Values->New 页面。它在值表中创建新值。在这里,我有entity_idattribute_id领域。我想从属性表中添加动态字段。因此,在 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+']') %> 它有些不是“专业 Ruby”的风格。它看起来像马车,像废话。(但它有效)。

最后,问题是:如何使它成为“专业的 Ruby 风格”,也许它必须看起来像f.text_field attr.name(它不起作用)。怎样成为?:)

4

0 回答 0