2012-04-19 2 views
1

У меня есть класс кредитных карт, и я бы хотел использовать метод simple_form f.input для различных атрибутов для использования с проверками и т. Д., Но я получаю ошибки в имени модели. Есть ли простой способ сделать это?Как использовать simple_form с простым классом Ruby?

= simple_form_for @credit_card, url: join_network_path do |f| 
    .payment-errors 
    = f.input :card_number 
    = f.input :cvc 
    = f.input :expiry_month 
    = f.input :expiry_year 
    = f.submit 'Join Network' 

ответ

4

Вы должны соответствовать ActiveModel API ...

Эффективно:

class CreditCard 
    include ActiveModel::Validations 
    include ActiveModel::Conversion 
    extend ActiveModel::Naming 

    def initialize(attributes = {}) 
    attributes.each do |name, value| 
     send("#{name}=", value) 
    end 
    end 

    def persisted? 
    false 
    end 
end 

Некоторые фона:

  1. http://yehudakatz.com/2010/01/10/activemodel-make-any-ruby-object-feel-like-activerecord/
  2. http://railscasts.com/episodes/219-active-model
+0

Спасибо! Я только что нашел эпизод Railscast и получил его работу. Но как сохраняются? всегда ложные вещи? Я должен буду изучить это. –

+0

@ EricM. похоже, влияет на HTTP-глагол, используемый в формах: 'false' приводит к' POST', 'true' приводит к' PATCH'. По крайней мере, я пока не нашел никаких других последствий. –