2014-06-16 44 views
0

我有一個軌道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?

+0

是它的一個'html'問題? – Newben

+0

每個產品是否有許多'product_fields'?此外,你應該看看'繭'寶石,它應該讓你的生活更輕鬆 - 不是太容易,但你想在這裏嵌套協會。 (不知道是否在屏幕視頻中推薦它,因爲它是溢價的,但根據評論它不是) – BroiSatse

+0

@BroiSatse,是的,每個產品has_many product_fields。我看着繭,但我真的想試試這個沒有使用寶石 – infinity

回答

1

product_fields是一個嵌套的屬性,你沒有build你的代碼中的任何地方,這就是爲什麼你沒有看到它。

假設產品的has_many product_fields,您可以通過兩種方式解決此問題,選擇一個適合你:

1.建立它在控制器級別

建立在對product_fieldsController#action其呈現有問題的視圖:

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

2.Bu在視圖級別保佑它

更新在_product_fields.html.erb,如下fields_for

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