2012-04-19 2 views
1

나는 신용 카드 클래스를 가지고 있으며 유효성 검사 등에 사용하기 위해 다양한 특성에 simple_form f.input 메서드를 사용하고 싶지만 model_name에 대한 오류가 발생합니다. 이 작업을 수행하는 간단한 방법이 있습니까?일반 Ruby 클래스에서 simple_form을 어떻게 사용합니까?

= 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' 결과를 나타냅니다. 적어도 나는 지금까지 다른 의미를 발견하지 못했다. –

관련 문제