Folks,
I have a shopping cart app that asks users for their shipping address,
and then asks them to click a checkbox if they have a different billing
address. There’s an event listener on the checkbox that detects the
click and renders a partial containing a series of new form fields for
the billing address. Works fine. Except that the user input in the
billing address fields isn’t being captured in params or saved to the
model. I have an app w/ identical functionality to this that works
fine, and I can’t figure out what’s going wrong. I’d be grateful for
any suggestions.
main view
<%= form_tag({:action => ‘save_customer’}, :multipart => true) %>
<%= javascript_include_tag ‘prototype’ %>
Please enter your details below
<%= text_field("customer", "name", "size" => 40 ) %>
<%= text_field("customer", "email", "size" => 40 ) %>
Your shipping address
<%= text_field(“customer”, “ship_address1”, “size” => 40 ) %>
<%= text_field("customer", "ship_address2", "size" => 40 ) %>
<%= text_field("customer", "ship_city", "size" => 40 ) %>
<%= options = [["Select a state", ""]] + Customer::STATE_NAMES select("customer", "ship_state", options) %>
<%= text_field("customer", "ship_zip", "size" => 10 ) %>
<%= options = [["Select a country", ""]] + Customer::COUNTRY_NAMES select("customer", "ship_country", options) %>
<%= check_box_tag(“different_bill”) %>
<%= observe_field(:different_bill, :update => “billinfo”, :url => {
:controller=>‘shirts’, :action => ‘billing_address’ }, :with =>
“‘id=’+value” ) %>
Credit CardPaypal
<%= submit_tag "Save" %>
partial – _billinfo.rhtml
Your billing address
<%= text_field(“customer”, “bill_address1”, “size” => 40 ) %>
<%= text_field("customer", "bill_address2", "size" => 40 ) %>
<%= text_field("customer", "bill_city", "size" => 40 ) %>
<%= options = [["Select a state", ""]] + Customer::STATE_NAMES select("customer", "bill_state", options) %>
<%= text_field("customer", "bill_zip", "size" => 10 ) %>
<%= options = [["Select a country", ""]] + Customer::COUNTRY_NAMES select("customer", "bill_country", options) %>
controller action
def billing_address
if params[:id] == "1"
render :partial => 'billinfo', :layout => false
else
render :nothing=>true
end
end