0

I have 3 models:

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

View #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>

View form:

<%= 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>

view 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 attribute is not being updated, and I just can't figure out why! Although the checkboxe is correctly being ticked if I manually change the values in my SQL table.

p.s: I just posted the relevant parts of my code.

2 Answers 2

1

In your LineItem model change attr_accessible :drop_ship_order_line_item to attr_accessible :drop_ship_order_line_item_attributes.

Sign up to request clarification or add additional context in comments.

Comments

0

What is the :type => "checkbox" for in the following code:

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

The second parameter for the check_box form helper should be the method. I think if you change to the following code, it should work:

<%= build.check_box :missing %> 

1 Comment

I don't think that's an issue, to keep it safe I took it out and the problem remains :/

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.