Figured out why my ActiveModel was not displaying.. <% f.fields_for :credit_card do |cc_fields| %>
needs to be <%= f.fields_for :credit_card do |cc_fields| %> I have another nested element on this page that is an ActiveRecord. That one gives a deprecation warning. For some reason the fields_for that takes an ActiveModel gives no warning. It just doesn't work. odd. Anyone know a built in way to handle date_select parameters from ActiveModel? just FYI.. here is part of my view. (addresses is an ActiveRecord and credit_card is an ActiveModel) <% f.fields_for :credit_card do |cc_fields| %> <%= render :partial => "cc_fields", :locals => { :cc_fields => cc_fields} %> <% end %> <% f.fields_for :addresses do |address_fields| %> <%= render :partial => "address_fields", :locals => { :address_fields => address_fields, :use_org => true } %> <% end %> It doesn't matter what order these are in the address form will always display and the credit_card will not (unless i use <%=) On Aug 13, 1:16 pm, Tony <tony.primer...@gmail.com> wrote: > When submitting billing information in the past I've always used > attr_accessor for credit card details as they should not be saved in > the database. In addition I always end up storing the card > expiration date so that the date form helper works correctly. > > With Active Model it seems logical to create a CreditCard class to > hold this data instead. > > **1st issue.** > > It seems there still isn't support for handling the form date_select. > (the card_expires_on(*) parameters). Should this work? Perhaps I'm > just missing an ActiveModel module > > **2nd issue.** > > In a perfect world this CreditCard class would be on the same form as > an ActiveRecord Order class but I have not been able to get an > ActiveModel to work as a nested object on a form. > > something like this.. on the order new form > <%= form_for @order do |f| -%> > . order stuff here.... > <% f.fields_for :credit_card do |cc_fields| %> > <%= cc_fields.label :card_number, '*Number' %> > <%= cc_fields.text_field :card_number, :class => > 'text', :autocomplete => 'off' %> > <% end %> > > I have not found what magic I need to add to the order model to make > this work. > > The <% f.fields_for :credit_card do |cc_fields| %> block is never > executed > > if credit card was an ActiveRecord I would simply put > has_one :credit_card > accepts_nested_attributes_for :credit_card > > instead I added a > attr_accessor :credit_card to the Order ActiveRecord class > > and my credit_card class looks like this.... > > class CreditCard > > include ActiveModel::Validations > include ActiveModel::AttributeMethods > include ActiveModel::Callbacks > include ActiveModel::Conversion > extend ActiveModel::Naming > > # belongs_to :user > > attr_accessor :card_type, :card_number, :card_verification, :card_expires_on, > :agree > > validates :card_type, :card_number, :card_verification, :card_expires_on, > :agree, :presence > => true > > def initialize(attributes = {}) > expire_date = {} > #raise attributes.inspect > attributes.each do |name, value| > send("#{name}=", value) > #this breaks on date items from date_select > end > end > > def persisted? > false > end > end > > Any idea what I am missing? -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-t...@googlegroups.com. To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.