部分表格没有显示问题

时间:2014-06-16 22:34:34

标签: javascript jquery ruby-on-rails ruby

我有一个rails 4应用程序,其中我基本上this railscast

_form.html.erb:

<%= form_for @store, do |f| %>

   <%= f.fields_for :products do |builder| %>
      <%= render "product_fields",  f: builder %>
   <% end %>
   <%= link_to_add_fields "Add Product", f, :products  %>
<% end %>

_product_fields.html.erb

<%= f.select :the_product_type, %w[Shelves, Tools, Wires]%>
<div>
   <%= f.fields_for :product_fields do |builder| %>
      <%= builder.text_area :name_of_product_field %>
   <% end %>
</div>

我的JS看起来像:

$('form').on('click', '.add_fields', function(e) {
    var regexp, time;
    time = new Date().getTime();
    regexp = new RegExp($(this).data('id'), 'g');
    $(this).before($(this).data('fields').replace(regexp, time));

    return e.preventDefault();
 });

我的问题是当我点击添加产品按钮时,我只能看到一个选择。我无法看到name_of_product_field textarea。但是,如果我看不到textarea,我无法弄清楚为什么我能看到选择?

1 个答案:

答案 0 :(得分:1)

product_fields是一个嵌套属性,您在代码中的任何位置都没有build,这就是您没有看到它的原因。

假设产品has_many product_fields ,您可以通过两种方式解决此问题,选择一个适合您的方式:

<强> 1。在控制器级别构建

在呈现有问题视图的product_fields中构建Controller#action

def action_name
  @store = Store.new
  product = @store.products.build
  product.product_fields.build
end

2.在视图级别构建

更新fields_for中的_product_fields.html.erb,如下所示:

<%= f.fields_for :product_fields, f.object.product_fields.build do |builder| %>