0

更新我有3種型號:嵌套屬性不會在軌

class DropShipOrderLineItem < ActiveRecord::Base 
    belongs_to :drop_ship_order 
    belongs_to :line_item 

    validates_associated :drop_ship_order 
    validates_associated :line_item 
    validates :drop_ship_order_id, :presence => true 
    validates :line_item_id, :presence => true 

    attr_accessible :missing 

end 

class DropShipOrder < ActiveRecord::Base 

    attr_accessible :line_items, :line_items_attributes, :orders, :order_attributes 

    belongs_to :retailer 
    belongs_to :order 
    belongs_to :shipping_method 

    has_many :drop_ship_order_line_items 
    has_many :line_items, :through => :drop_ship_order_line_items 
    has_many :shipments, :dependent => :destroy 

    accepts_nested_attributes_for :line_items 
    accepts_nested_attributes_for :order 
    accepts_nested_attributes_for :drop_ship_order_line_items 

    before_create :generate_order_number 

    scope :by_number, lambda {|number| where("drop_ship_orders.number = ?", number)} 
    scope :between, lambda {|*dates| where("drop_ship_orders.created_at between ? and ?", dates.first.to_date, dates.last.to_date)} 
    scope :by_customer, lambda {|customer| joins(:order).joins(:user).where("users.email =?", customer)} 
    scope :by_state, lambda {|state| where("state = ?", state)} 
    scope :complete, where("drop_ship_orders.completed_at IS NOT NULL") 
    scope :incomplete, where("drop+ship_orders.orders.completed_at IS NULL") 

    make_permalink :field => :number 

    validates_associated :order 
    validates_associated :retailer 
end 

LineItem.class_eval do 

    has_one :drop_ship_order_line_item, :dependent => :destroy 
    has_one :drop_ship_order, :through => :drop_ship_order_line_items 

    accepts_nested_attributes_for :drop_ship_order_line_item 

    attr_accessible :drop_ship_order_line_item 

# def missing 
# self.drop_ship_order_line_item.missing 
# end 

end 

查看#1:

<div data-hook="admin_order_edit_form"> 
    <div id="order-form-wrapper"> 
    <%= render :partial => 'form', :locals => {:drop_ship_order => @drop_ship_order} %> 
    </div> 
</div> 

查看形式:

<%= form_for(@drop_ship_order, :url => admin_drop_ship_order_path(@drop_ship_order), :html => { :method => :put}) do |f| %> 
    <%= f.hidden_field :number %> 
    <table class="index"> 
    <tbody id='line-items'> 
     <tr data-hook="admin_order_form_line_items_headers"> 
     <th><%= t('item_description') %></th> 
     <th class="price"><%= t('price') %></th> 
     <th class="qty"><%= t('qty') %></th> 
     <th class="total"><span><%= t('total') %></span></th> 
     <th class="orders-actions" data-hook="admin_order_form_line_items_header_actions"></th> 
     </tr> 
     <%= f.fields_for :line_items do |li_form| %> 
     <%= render :partial => "admin/drop_ship_orders/line_item", :locals => { :f => li_form } %> 
     <% end %> 
    </tbody> 
    <tbody id='subtotal' data-hook="admin_order_form_subtotal"> 
     <tr id="subtotal-row"> 
     <td colspan="3"><b><%= t('subtotal') %>:</b></td> 
     <td class="total"><span><%= number_to_currency @drop_ship_order.item_total %></span></td> 
     <td></td> 
     </tr> 
    </tbody> 

視圖LINE_ITEM:

<tr id="<%= dom_id(f.object) %>" data-hook="admin_order_form_line_item_row"> 
    <td width="300"><%=f.object.variant.product.name%> <%= "(" + variant_options(f.object.variant) + ")" unless f.object.variant.option_values.empty? %></td> 
    <td valign="top" class="price"><%= number_to_currency f.object.price %></td> 
    <td valign="top" class="qty"><strong><%= f.object.quantity %></strong></td> 
    <td valign="top" class="total"><%= number_to_currency (f.object.price * f.object.quantity)%></td> 
    <td data-hook="admin_order_form_line_item_actions"> 
    <!--<input type="checkbox" name="apple" id="apples"/>--> 
    <%#= f.object.drop_ship_order_line_item.missing %> 
    <%= f.fields_for :drop_ship_order_line_item do |build|%> 
     <%= build.check_box :missing, :type => "checkbox" %> 
    <% end %> 

    </td> 
</tr> 

The:missing屬性沒有被更新,我只是不明白爲什麼!儘管如果手動更改我的SQL表中的值,複選框被正確勾選。

p.s:我剛剛發佈了我的代碼的相關部分。

回答

1

在你的LineItem模式的變革attr_accessible :drop_ship_order_line_itemattr_accessible :drop_ship_order_line_item_attributes

0

什麼是:類型=>「複選框」爲在下面的代碼:

<%= build.check_box :missing, :type => "checkbox" %> 

爲check_box形式助手應該是該方法的第二個參數。我認爲,如果你換到下面的代碼,它應該工作:

<%= build.check_box :missing %> 
+0

我不認爲這是一個問題,爲了保持安全我把它拿出來,問題仍然存在:/ – mabounassif