2014-11-06 14 views
10

Im cố gắng để tạo ra hai trường dữ liệu ẩn, và một xuất hiện không có vấn đề, nhưng khác mà xuất phát từ hình thức lồng nhau khôngsimple_fields_for không hiển thị [ray 4]

product.rb

class Product < ActiveRecord::Base 
    has_many :product_options, dependent: :destroy 
    accepts_nested_attributes_for :product_options, allow_destroy: true, :reject_if => proc { |x| x[:option_name].blank? } 
    belongs_to :user 
end 

product_option.rb

class ProductOption < ActiveRecord::Base 
    belongs_to :product 
end 

products_controller.rb

class ProductsController < ActionController::Base 
    layout "application" 

    def index 
    @products = Product.all 
    @current_user = Client.find_by(id: session[:client]) 
    if @current_user.redeemed == true 
     redirect_to root_path 
    end 
    end 

    def show 
    @product = Product.find(params[:id]) 
    @product_option = @product.product_options.find(params[:id]) 
    @current_user = Client.find_by(id: session[:client]) 
    @current_user.update(:product_option => @product_option.option_name) 
    @current_user.update(:selected_product => @product.id) 
    render :nothing => true 
    end 

    private 
    def product_params 
     params.require(:product).permit(:name, :id, :position, :product_description, :product_image_type, :product_image, :product_detail, :product_option_id, 
      :product_options_attributes => [:id, :option_name, :ranking, :total_redeemed, :product_id]) 
    end 
end 
.210

_form.html.erb

<%= simple_form_for Product.new, :method => "post",:remote => true, :class => "item_prompt" do |f| %> 
     <%= f.hidden_field :id, :class => 'product_id' %> 
     <%= f.simple_fields_for :product_options do |ff| %> 
      <%= ff.hidden_field :id, :class => 'product_option_id' %> 
     <% end %> 
     <%= f.submit "Yep!", :class => "yep ready_button confirm_button", :name => "confirm_button" %> 
    <% end %> 

sản lượng html

<form accept-charset="UTF-8" action="/products" class="simple_form new_product" data-remote="true" id="new_product" method="post" novalidate="novalidate"> 
    <input class="product_id" id="product_id" name="id" type="hidden" value="240"> 
    <input class="yep ready_button confirm_button" name="confirm_button" type="submit" value="Yep!"> 
<form> 

Trả lời

17

tôi figured này ra, ... vấn đề là

sẽ lặp fields_for qua một hiệp hội sưu tập, làm ra như nhiều lần vì có các mục trong đó, có nghĩa là 0 lần nếu liên kết trống

để khắc phục sự cố tôi phải thêm

@product = Product.new 
@product.product_options.build 

đến hành động chỉ mục trong bộ điều khiển.

+0

Cảm ơn bạn đã để lại câu trả lời cho hậu thế. Nó đã giúp tôi! – fastredshoes

Các vấn đề liên quan